MySQL之IFNULL()、ISNULL、NULLIF用法
MySQL之IFNULL()、ISNULL、NULLIF用法
IFNULL語法說明
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 返回 expr1,否則它返回 expr2。
IFNULL()返回一個數字或字符串值,取決于它被使用的上下文環境。
舉個栗子:
由于 expr1 是 1,不為 NULL,所以函數返回 1. 我們可以再試下,如果讓 expr1 為 NULL,是否能返回第二個參數呢? 不妨讓 expr1 = null, 由于expr1為null,結果就為 NULL 了。
1 mysql> SELECT IFNULL(null,'expr1 is null'); 2 +------------------------------+ 3 | IFNULL(null,'expr1 is null') | 4 +------------------------------+ 5 | expr1 is null | 6 +------------------------------+ 7 1 row in set當 expr1 是 true,不為 NULL,函數返回什么呢? 我們可以再試下,不妨讓 expr1 = true,然后查看結果:
1 mysql> SELECT IFNULL(true,'expr1 is true'); 2 +------------------------------+ 3 | IFNULL(true,'expr1 is true') | 4 +------------------------------+ 5 | 1 | 6 +------------------------------+ 7 1 row in set結果是1。為什么不是true?難道是因為布爾型true轉為數值型1?那當 expr1 是 false,不為 NULL,函數返回什么呢? 我們可以再試下,不妨讓 expr1 = false,然后查看結果:
1 mysql> SELECT IFNULL(false,'expr1 is false'); 2 +-------------------------------+ 3 | IFNULL(false,'expr1 is false')| 4 +-------------------------------+ 5 | 0 | 6 +-------------------------------+ 7 1 row in set結果是0。為什么是0,而不是false?難道是因為布爾型false轉為數值型0?
我們接下來測試一下IFNULL(1/0,10)
1 mysql> SELECT IFNULL(1/0,10); 2 +---------------------+ 3 | IFNULL(1/0,10) | 4 +---------------------+ 5 | 10 | 6 +---------------------+ 7 1 row in set結果是10,這意味著1/0的結果為NULL,即空。所以返回10。
那IFNULL(0/1,10)呢?
結果為0。是因為0/1=0,0不是空值。從這里看1/0似乎是特殊的結果,正常情況下0不能作除數。(被除數/除數=商)
ISNULL語法說明
ISNULL(expr) ;
如果expr 為null,那么ISNULL() 的返回值為 1,否則返回值為 0。
因為1+1=2,值不為空,故返回 0 。
1 mysql> SELECT ISNULL(1/0); 2 +---------------------+ 3 | ISNULL(1/0) | 4 +---------------------+ 5 | 1 | 6 +---------------------+ 7 1 row in set1/0的結果為空,故返回 1 。
NULLIF語法說明
NULLIF(expr1,expr2);
如果expr1等于expr2,則返回空(Null)。如果expr1不等于expr2則返回expr1。
大家注意:SELECT NULLIF(1/0,1)的結果
1 mysql> SELECT NULLIF(1/0,1); 2 +-------------+ 3 | NULLIF(1/0,1) | 4 +-------------+ 5 | (Null) | 6 +-------------+ 7 1 row in set總結
以上是生活随笔為你收集整理的MySQL之IFNULL()、ISNULL、NULLIF用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python的元组被设计成不可变的影响
- 下一篇: 数据库查询字段为空时,返回0