zoukankan      html  css  js  c++  java
  • MySQL-ISNULL()、IFNULL()和NULLIF()函数

    以下三个函数都可以用于where子条件,作为数据删除、更新的记录定位依据。

    如:

    SELECT * FROM usergrade WHERE ISNULL(USERNAME);

    一、ISNULL(expr)

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

    mysql> select isnull(1/0) as result;
    +--------+
    | result |
    +--------+
    |      1 |
    +--------+
    1 row in set (0.00 sec)
    
    mysql> select isnull(0/1) as result;
    +--------+
    | result |
    +--------+
    |      0 |
    +--------+
    1 row in set (0.00 sec)

    使用=的null值对比通常是错误的。 

    isnull()函数同is null比较操作符具有一些相同的特性。请参见有关is null 的说明。

    二、IFNULL(expr1,expr2)

    假如expr1不为NULL,不管expr2的值是否为NULL,IFNULL()的返回值为expr1;否则其返回值为expr2。

    IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

    mysql> SELECT IFNULL(1,0);
    +-------------+
    | IFNULL(1,0) |
    +-------------+
    |           1 |
    +-------------+
    1 row in set (0.01 sec)
    
    mysql> SELECT IFNULL(NULL,10); 
    +-----------------+
    | IFNULL(NULL,10) |
    +-----------------+
    |              10 |
    +-----------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT IFNULL(1/0,10);  
    +----------------+
    | IFNULL(1/0,10) |
    +----------------+
    |        10.0000 |
    +----------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT IFNULL(1/0,'yes'); 
    +-------------------+
    | IFNULL(1/0,'yes') |
    +-------------------+
    | yes               |
    +-------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT IFNULL(1,'yes'); 
    +-----------------+
    | IFNULL(1,'yes') |
    +-----------------+
    | 1               |
    +-----------------+
    1 row in set (0.00 sec)

    三、NULLIF(expr)

    如果expr1=expr2成立,那么返回值为NULL,否则返回值为expr1。

    mysql> select nullif(1,1);
    +-------------+
    | nullif(1,1) |
    +-------------+
    |        NULL |
    +-------------+
    1 row in set (0.00 sec)
    
    mysql> select nullif('a',1);
    +---------------+
    | nullif('a',1) |
    +---------------+
    | a             |
    +---------------+
    1 row in set, 1 warning (0.00 sec)
  • 相关阅读:
    构建调试Linux内核网络代码的环境MenuOS系统
    关于iOS开发证书的一些总结(很有用)
    iOS原型模式
    iOS不用调用,running time自动执行方法
    关于网络设计服务结构的一些理解
    iOS 6.0之后支持一个页面横屏的方法
    iOS返回一个前面没有0,小数点后保留两位的数字字符串
    CoreData总结
    分享一个复用代码块的博客
    分享一个可以打开沙盒的软件
  • 原文地址:https://www.cnblogs.com/yy20141204bb/p/8419047.html
Copyright © 2011-2022 走看看