SQL Server函數之空值處理


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
 

注意:
當第一個表達式為字符串且不能轉化為整數時,若在后面的表達式中有整數,這樣的語句是會報錯的。
例如:

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轉換為相應的整數
 

但是

 
select 
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM