在使用left join等聯表查詢時,常遇到某些欄位為null,一般都在後台語言使用if (a==null) 判斷做處理,其實mysql本身也有乙個ifnull函式可以處理。同時我們也來說說isnull()和nullif()函式。
一、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。
二、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。
MySql的IF和IFNULL函式
mysql的if既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用 if expr1,expr2,expr3 如果 expr1 是true expr1 0 and expr1 null 則 if 的返回值為expr2 否則返回值則為 expr3。if 的返回值為數字值或字...
MYSQL中的IFNULL與IF函式
1.ifnull expr1,expr2 2.如果expr1不是null,ifnull 返回expr1,否則它返回expr2。ifnull 返回乙個數字或字串值,取決於它被使用的上下文環境。3.mysql select ifnull 1,0 4.1 5.mysql select ifnull 0,1...
關於MySQL中的IFNULL函式和IF函式
mysql中的ifnull函式類似於oracle中的nvl函式,其表示式為 ifnull expr1,expr2 含義是 如果第乙個引數不為空,則返回第乙個引數,否則返回第二個引數。if expr1,expr2,expr3 類似於oracle中的nvl2函式,含義是 如果第乙個表示式的值為true ...