MySQL 的IFNULL()、ISNULL()和NULLIF()函式

不一樣的天空w發表於2018-07-03
一、IFNULL用法
     1.1 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。
     
     1.2 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 的說明。    

二、ISNULL(expr) 的用法
    如expr 為null,那麼isnull() 的返回值為 1,否則返回值為 0。
    
    mysql> select isnull(1+1);
                       -> 0
    mysql> select isnull(1/0);
                       -> 1
    使用= 的null 值對比通常是錯誤的。
    
三、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。   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2157240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章