数据库查询null值时的SQL处理

MySql 里的IFNULL、NULLIF和ISNULL用法区别

  • ifnull(expr1,expr2) 的用法:
    IFNULL(expr1,expr2)即如果expr1不为空,则返回值为expr1;expr1为NULL,则返回为expr2;expr2有点类似替补球员;

举例:

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

注意:IFNULL只是针对局部字段的替换;如果整个结果查出来都是空,则不能使用IFNULL(P1,P2)

应用场景
mybatis返回的null类型数据消失,导致前端展示出错。
如果查询出的结果是空值,应当转换成空字符串。当然在前端可以用?三目比较运算符进行判断,但要求后台实现这个功能。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
对null进行判断并赋值

  • isnull(expr) 的用法:

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

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

使用= 的null 值对比通常是错误的。
isnull() 函数同 is null比较操作符具有一些相同的特性。详细差异需比较is null操作符。

  • 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  

如果参数不相等,则 NULLIF(expr1,expr2) 求得的值为 expr1 。

猜你喜欢

转载自blog.csdn.net/qq_38023253/article/details/78767087
今日推荐