MySQL中的isnull、ifnull和nullif函數用法

isnull(expr)html

      如expr爲null,那麼isnull()的返回值爲1,不然返回值爲0。 mysql

mysql>select isnull(1+1);sql

    ->0函數

mysql>select isnull(1/0);測試

    ->1.net

使用=的null值對比一般是錯誤的。 3d

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

ifnull(expr1,expr2)htm

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

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 。



1、IF函數 
表達式:IF(expr1,expr2,expr3) 
知足條件expr1即條件expr1返回true 
則expr2不然就是expr3 返回false 
做爲排序條件使用時 放在order by 後 
eg: 
1. SELECT IF(1=1,2,3); 則輸出2 
2.SELECT IF(1=2,2,3);則輸出3 
select * from test_table order by if(ISNULL(idcard),1,0) 
2、IFNULL函數 
表達式:IFNULL(expr1,expr2) 
若是expr1值爲NULL,則輸出expr2 
若是expr1值不爲空則輸出expr1自己

eg: 
1.SELECT IFNULL(null,」2」);則輸出2 
2.SELECT IFNULL(3,」2」);則輸出3

3、is not null函數 
select * from test where name is not null; 
4、isnull(expr) 的用法: 
如expr 爲null,那麼isnull() 的返回值爲 1,不然返回值爲 0。




相關文章
相關標籤/搜索