MySql 裏的IFNULL、NULLIF和ISNULL用法

今天用到了MySql裏的isnull才發現他和MSSQL裏的還是有點區別,現在簡單總結一下:

mysql中isnull,ifnull,nullif的用法如下:

isnull(expr) 的用法:

如expr 爲null,那麼isnull() 的返回值爲 1,否則返回值爲 0。

mysql> select isnull(1+1);
-> 0
mysql> select isnull(1/0);
-> 1

使用= 的null 值對比通常是錯誤的。

isnull() 函數同 is null比較操作符具有一些相同的特性。請參見有關is null 的說明。

IFNULL(expr1,expr2)的用法:

假如expr1 不爲 NULL,則 IFNULL() 的返回值爲 expr1;
否則其返回值爲 expr2。IFNULL()的返回值是數字或是字符串,具體情況取決於其所使用的語境。

mysql>   SELECT   IFNULL(1,0);   
                  ->   1   
mysql>   SELECT   IFNULL(NULL,10);   
->   10   
mysql>   SELECT   IFNULL(1/0,10);   
->   10   
mysql>   SELECT  IFNULL(1/0,'yes');   
->   'yes'  

IFNULL(expr1,expr2)的默認結果值爲兩個表達式中更加“通用”的一個,順序爲STRING、 REAL或
INTEGER。假設一個基於表達式的表的情況, 或MySQL必須在內存儲器中儲存一個臨時表中IFNULL()的返回值:

CREATE   TABLE   tmp   SELECT   IFNULL(1,'test')   AS   test; 

在這個例子中,測試列的類型爲 CHAR(4)。
NULLIF(expr1,expr2) 的用法:
如果expr1 = expr2 成立,那麼返回值爲NULL,否則返回值爲 expr1。這和CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END相同。


mysql>   SELECT  NULLIF(1,1);   
NULL   
mysql>   SELECT   NULLIF(1,2);   
->   1  

如果參數不相等,則 MySQL 兩次求得的值爲 expr1 。

發佈了3 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章