1. 程式人生 > >SQL 中的 IFNULL和NULLIF

SQL 中的 IFNULL和NULLIF

sql 中的IFNULL和NULLIF很容易混淆,在此記錄一下。

IFNULL

IFNULL(expression1, expression2)

如果expression1為null, 在函式返回expression2,否則將返回expression1。

例如

mysql> select IFNULL(0,"a");
+---------------+
| IFNULL(0,"a") |
+---------------+
| 0             |
+---------------+
1 row in set (0.00 sec)

第一個引數是0,不是NULL,所以結果是0.

再例如,

mysql> select IFNULL(NULL,"a");
+------------------+
| IFNULL(NULL,"a") |
+------------------+
| a                |
+------------------+
1 row in set (0.00 sec)

mysql>

第一個引數是NULL,所以結果是第二個引數"a"。

NULLIF

IFNULL(expression1, expression2)

如果兩個引數等價,則返回NULL ;否則,返回第一個引數。

例如

mysql> select NULLIF(1,2);
+-------------+
| NULLIF(1,2) |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

兩個引數不相等,所以結果是第一個引數1。

再例如,

mysql> select NULLIF(1,1);
+-------------+
| NULLIF(1,1) |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

兩個引數相等,所以結果是NULL。