MySQL-ISNULL()IFNULL()和NULLIF()函数

Posted YY&BB姐姐的光阴故事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)

 

以上是关于MySQL-ISNULL()IFNULL()和NULLIF()函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中的 IFNULL和NULLIF

MySQL 计数和 IFNULL

MySQL 的IFNULL()ISNULL()和NULLIF()函数

BigQuery COALESCE/IFNULL 类型与文字不匹配

mysql ifnull 函数 使用和 if 三目运算

MySQL中的IFNULL用法