SQL 中的 IFNULL和NULLIF
阿新 • • 發佈:2018-12-02
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。