2013-09-23 120 views
0

我想測試一個變量是空,但我似乎有一個語法錯誤,我的代碼是:SQL:IS NULL不工作

DECLARE @count1 INT 

SET @count1 = 
(SELECT HPlayedHome FROM League WHERE GameID = 
(SELECT TOP 1 GameID From Goals WHERE Date <= '20130923' AND Home = 'Palermo' 
AND (GameID >=2551 AND GameId <= 5100) ORDER BY Date Desc)) 

SELECT CASE @count1 IS NULL THEN 0 ELSE @count1 END 

我想查詢返回的值@ count1,但是如果它是NULL返回0. SQL SERVER 2012突出顯示IS上的語法錯誤,'IS附近的語法錯誤'。

回答

10

CASE WHEN是正確的語法:

SELECT CASE WHEN @count1 IS NULL THEN 0 ELSE @count1 END 

你都知道的事實,你可以縮短這

SELECT ISNULL(@count1, 0) 
+0

啊,愚蠢的錯誤。歡迎縮短版本。 – user2096512

1

有兩種形式的CASE:

CASE 
    WHEN condition1 THEN result1 
    WHEN condition2 THEN result2 
    ELSE result3 
END 

CASE variable 
    WHEN value1 THEN result1 
    WHEN value2 THEN result2 
    ELSE result3 
END 

你可以使用表單2,但將IS更改爲WHEN以使其在語法上正確:

SELECT CASE @count1 WHEN NULL THEN 0 ELSE @count1 END 

不幸的是,比較用平等的測試完成的,空並不等於NULL,所以你必須使用表格1:

SELECT CASE WHEN @count1 IS NULL THEN 0 ELSE @count1 END 

已經有處理功能空值:COALESCE(),它返回傳遞給它的第一個非空值:

SELECT COALESCE(@count1, 0)