coalesce( expression [ ,...n ] )返回其參數中第一個非空表達式。
Select coalesce(null,null,'1','2') //結果為 1
coalesce(expression1,...n) 與此 case函數等效:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END
注意:
當第一個表達式為字符串且不能轉化為整數時,若在后面的表達式中有整數,這樣的語句是會報錯的。
例如:
Select COALESCE('a',null,'1',2) //這是錯誤的
這相當於
select
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN 2
ELSE NULL
END //會出現錯誤,因為系統無法將a轉換為相應的整數
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN 2
ELSE NULL
END //會出現錯誤,因為系統無法將a轉換為相應的整數
但是
select
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN '2'
ELSE NULL
END //這是正確的
CASE
WHEN ('a' IS NOT NULL) THEN 'a'
WHEN (2 IS NOT NULL) THEN '2'
ELSE NULL
END //這是正確的
所以我們在使用coalesce函數時,應該相當小心。
isnull( check_expression , replacement_value ) 使用指定的替換值替換 NULL。
replacement_value 必須是可以隱式轉換為 check_expresssion 類型的類型。
在表stu中
select isnull(ssex,'p') from stu //若ssex列中有NULL值,那么返回p
nullif( expression , expression ) 如果兩個指定的表達式相等,則返回空值,否則 NULLIF 返回第一個 expression 的值。
select nullif(1,1) //結果為 NULL
select nullif(1,2) //結果為 1
select nullif(1,2) //結果為 1