2013-10-08 118 views
24

我有這樣的代碼在我的select語句在sql server中有沒有與ISNULL相反的功能?要做不是null?

ISNULL(a.PolicySignedDateTime,aq.Amount) AS 'Signed Premium', 

但我想看看是否「a.PolicySignedDateTime」不爲空。 有沒有一個簡單的函數來做到這一點,而不涉及使用「if」語句?

乾杯傢伙

+3

使用'CASE'表達:'CASE WHEN a.PolicySignedDateTime IS NOT NULL THEN ... ELSE ... END' –

+1

不是表達 – VeNoMiS

回答

27

你必須使用CASE

SELECT CASE WHEN Field IS NOT NULL 
    THEN 'something' 
    ELSE 'something else' 
END 
1

試試這個:

 
SELECT 
    CASE 
    WHEN a.PolicySignedDateTime IS NOT NULL THEN a.PolicySignedDateTime 
    ELSE aq.Amount 
FROM your joined table 

但是.... ISNULL(a.PolicySignedDateTime,aq.Amount)檢查你的領域是空的,所以不是null你得到它的價值。

所以我不太明白,因爲你想用另一種方式。

+0

嗨,是的,基本上我想做「ISNOTNULL(a.PolicySignedDateTime,aq.Amount)」,但它不存在 – Bobby

+0

使用CASE,因爲我已經寫在我的答案;) –

2

有COALESCE表達式(雖然不是函數https://msdn.microsoft.com/en-us/library/ms190349.aspx)按順序測試參數,並繼續這樣做,直到發現值不爲NULL並返回它。

用法示例:
SELECT COALESCE(NULL, NULL, 5)--returns 5

你的情況:
COALESCE(a.PolicySignedDateTime,aq.Amount) AS 'Signed Premium',