mysql中IFNULL,IF,CASE的区别介绍

发布时间:2018-04-15 09:54:57

假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,pending refund,refund,cancel.

我们知道查询状态为cancel的订单,SQL语句可以这样写:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status = 'cancel'

SQL语句能查询出正确的数据,但是当我们想查询状态为非cancel的订单时,可能会出麻烦, 因为status字段没 有设置NOT NULL,所以大部分订单的status值都是NULL,这样的话,用'<>'查询出来的数据不正确,只有status除了cancel之外的非空数据查询出来了,而为NULL的没有查询出来。SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status <>'cancel'原 因:NULL值操作

NULL值可能令人感到奇怪直到你习惯它。概念上,NULL意味着“没有值”或“未知值”,且它被看作与众不同的值。为了测试NULL,你不能使用算术比较 操作符例如=、 SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;

+----------+-----------+----------+----------+

| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |

+----------+-----------+----------+----------+

| NULL | NULL | NULL | NULL |

+----------+-----------+----------+----------+

很 显然你不能通过这些比较得到有意义的结果。相反使用IS NULL和IS NOT NULL操作符:mysql> SELECT 1 IS NULL, 1 IS NOT NULL;

+-----------+---------------+

| 1 IS NULL | 1 IS NOT NULL |

+-----------+---------------+

| 0 | 1 |

+-----------+---------------+

请注意在MySQL中,0或 NULL意味着假,而其它值意味着真。布尔运算的默认真值是1。根据以上的NULL值操作结果,最终使用此种方式解决:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE IFNULL(o.status,'pending') <>'cancel'学习:IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使 用的上下文环境。

复制代码 代码如下:

mysql> select IFNULL(1,0); ->1

mysql> select IFNULL(0,10); ->0

mysql> select IFNULL(1/0,10); ->10.0000

mysql> select IFNULL(1/0,'yes'); ->'yes'IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回 expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。

mysql> select IF(1>2,2,3); -> 3

mysql> select IF(1<2,'yes','no'); -> 'yes'

(1) CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END //这个我还没想到咋用,知道的可以留言交流,

(2) CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END //这个面试时被人问到了,可以用作条件判断

第(1)个返回 result,其中value=compare-value。第(2)个中如果第一个条件为真,返回result。如果没有匹配的result值,那么结 果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。

复制代码 代码如下:

mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END; -> "one"

mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; -> "true"

mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END; -> NULL

上面的例子本人在mysql5.2.6上测试通过=====================================================================================PS:以上是转载的内容,觉得很不错就转过来了,其中的CASE...WHEN...THEN、IF、IFNULL都是常用到的函数eg:SELECT id,username,CASE gender WHEN 1 THEN "男" WHEN 2 THEN "女" END FROM t_people; SELECT b.id,b.book_name,CASE b.type WHEN 1 THEN "计算机" WHEN 2 THEN "会计" ELSE "其它" END FROM book b;

相关文章

120726 11:57:22 [Warning] user entry root@localhost localdomain ignored in --skip-name-resolv 2018-04-15

基本概念 & 8226; 字符(Character)是指人类语言中最小的表义符号。例如 A 、 B 等; & 8226; 给定一系列字符 2018-04-15

简要说明 字符集和校对规则 字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。 MySql在 2018-04-15

需要开启一个慢查询输出的一个机关:log_slow_queries。可以在MySQL配置文件中(my ini my cnf)中设置,也可以通 2018-04-15

今天在使用ORDER BY的过程中出现了一点问题,发现之前对ORDER BY理解是错误的。 之前在w3s网站上看到ORDER B 2018-04-15

今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:

mysql中isnull,ifnull,nullif 2018-04-15

IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值 2018-04-15

在MySQL中isnull()函数不能作为替代null值!

如下:

首先有个名字为business的表:

SELECT ISNULL( 2018-04-15

*创建数据库* CREATE DATABASE tmpgoUSE tmpgo

*创建数据库测试表* CREATE TABLE [Scores] ( [ID] 2018-04-15

使用CASE WHEN进行字符串替换处理复制代码 代码如下:mysql> select * from sales;

9 rows in set (0 0 2018-04-15

Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:

IF表达式

复制代 2018-04-15

mysql 中类似php switch case 的语句。

select xx字段,

case 字段

when 条件1then值1

2018-04-15

mysql数据库中CASE WHEN语句。

case when语句,用于计算条件列表并返回多个可能结果表达式之一。

CASE 具有两 2018-04-15

mysql ifnull 别名_mysql中IFNULL,IF,CASE的区别介绍相关推荐

  1. mysql decimal 类型_MySQL中decimal类型用法的简单介绍

    MySQL中支持浮点数的类型有FLOAT.DOUBLE和DECIMAL类型,DECIMAL 类型不同于FLOAT和DOUBLE,DECIMAL 实际是以串存放的.DECIMAL 可能的最大取值范围与D ...

  2. [Perl]Perl中chomp和chop的区别介绍

    Perl中chomp和chop的区别介绍 一.chomp是用来删除换行符. #!/usr/bin/perl $c = "abcde\n"; chomp($c); print(&qu ...

  3. php中 br什么意思,HTML_html中br和br/的区别介绍,answer from stackflow: Simply br - phpStudy...

    html中br和br/的区别介绍 answer from stackflow: Simply is sufficient. The other forms are there for compatib ...

  4. php mysql ifnull函数_MYSQL中的IFNULL函数

    手册上: IFNULL(expr1,expr2) 假如expr1不为NULL,则IFNULL()的返回值为 expr1;否则其返回值为 expr2.IFNULL()的返回值是数字或是字符串,具体情况取 ...

  5. mysql 表别名_MySQL 表别名(Alias)

    SQL 表别名 在 SQL 语句中,可以为表名称及字段(列)名称指定别名(Alias),别名是 SQL 标准语法,几乎所有的数据库系统都支持.通过关键字 AS 来指定. 表别名语法: SELECT c ...

  6. mysql提取数字_Mysql中实现提取字符串中的数字的自定义函数分享

    因需要在mysql的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的mysql函数,可以有效的从字符串中提取出数字. 该mysql提取出字符串中的数字函数如下: 复制代码 代 ...

  7. mysql blob 字段_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  8. mysql 关联索引_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

  9. mysql range用法_MySQL中Explain的用法总结(详细)

    本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 执行计划(query Execution plan) 语法e ...

最新文章

  1. html表格中添加修改和删除链接,jQuery实现为table表格动态添加或删除tr功能示例...
  2. 一张图搞懂容器所有操作 - 每天5分钟玩转 Docker 容器技术(26)
  3. 常用损失函数(L1、L2、SSIM和MS-SSIM)对比简介
  4. ubuntu使用rabbitmq的一些基本命令
  5. fuser 用法简析
  6. 图像局部显著性—点特征(FREAK)
  7. 42、Java服务内存OOM原因分析
  8. 漫步微积分二——微积分是什么
  9. 毕设题目:Matlab优化分配
  10. TouchVG 支持 CocoaPods 了!
  11. 【更新】ReSharper v2018.3发布
  12. QT 代码添加QScrollArea
  13. 测试内存的频率稳定性软件,超频心得:3000MHz通过1000%稳定性测试_内存硬盘评测-中关村在线...
  14. 小程序源码:独家修复登录接口社区论坛-多玩法安装简单
  15. 刚刚装好的ppt插件islide消失了,如何解决呢?
  16. 深度学习:view size is not compatible with input tensor‘s size and stride (at least one dimension spans a
  17. 记--重新安装python相关软件及环境配置
  18. 类似冒险岛这类游戏是用什么语言编写?或者说它的制作流程是什么?
  19. 2007你“值”多少钱(薪水,薪酬,工资,待遇,年薪,月薪)
  20. Java项目:物流快递管理系统(java+SSM+jsp+mysql)

热门文章

  1. Navicat连接MySQL 报错 1129
  2. hdu 4276 The Ghost Blows Light(树型DP)
  3. 虎符CTF MISC 奇怪的组织
  4. Ubuntu udev rules
  5. iView单选框默认选中问题
  6. 外挂辅助技术研究-分析选怪功能
  7. Python自动化测试面试题及答案(持续更新中)
  8. 34个案例,110页中小企业“链式”数字化转型典型案例集
  9. 工业革命的秋之涟漪(一):百度飞桨AI引擎
  10. IDEA的Gradle安装与使用