MySql 里的IFNULL、NULLIF和ISNULL用法

今天在做项目的时候要使用CriteriaQuery cq = new CriteriaQuery(class, dataGrid);查询组件,查询视图中“salesName”字段值为空的数据,因为CriteriaQuery做了过滤,如果字段值为空则默认查询出所有的数据,于是在纠结要不要自己手写sql时,想到干嘛不在视图中就判断一下,如果该字段值为空 那么给他赋值另外一个状态呢

于是想起了Oracle中的 ISNULL( check_expression , replacement_value  函数:

Oracle 中 ISNULL语法为:若 check_expression 不为 NULL,那么返回该表达式的值;否则返回 replacement_value

而MySql 有所不同 :

MySql 里的IFNULL、NULLIF和ISNULL用法

isnull(expr) 的用法:

如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。

mysql> select isnull(1+1);
-> 0
mysql> select isnull(1/0);
-> 1

ifnull(expr1,expr2)的用法:

假如expr1 不为 null,则 ifnull() 的返回值为 expr1,否则其返回值为 expr2。

mysql> SELECT IFNULL(1,0); 
-> 1 
mysql> SELECT IFNULL(NULL,10); 
-> 10 
mysql> SELECT IFNULL(1/0,10); 
-> 10 
mysql> SELECT
IFNULL(1/0,'yes'); 
-> 'yes'
ifnull(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或 INTEGER。假设一个基于表达式的表的情况, 或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:

CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;
在这个例子中,测试列的类型为 CHAR(4)。

nullif(expr1,expr2) 的用法:

如果expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。

mysql> SELECT
NULLIF(1,1); 
-> NULL
mysql> SELECT NULLIF(1,2); 
-> 1 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值