Oracle排序中NULL值處理的五種常用方法
from employee
order by ( case employee_name
when null then
'張三'
else
employee_name
end)
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 。