2012-09-11 42 views
2

T-SQL這是我的代碼:WHERE NOT IN不要再追空值

DECLARE @TABLE TABLE 
(
    RecordID BIGINT, 
    RecordValue NVARCHAR(10) 
) 

INSERT INTO @TABLE(RecordID,RecordValue) 
VALUES (1,'100') 
     ,(2,NULL) 
     ,(3,'200') 
     ,(4,NULL) 
     ,(5,'200') 

SELECT RecordID,RecordValue 
FROM @TABLE 
WHERE RecordValue NOT IN ('200') 

OUTPUT:

慾望OUTPUT:

2 NULL

4 NULL

我怎樣才能得到'NULL'值呢?

其實,我的sql語句是由很多程序和函數生成的,我在使用ISNULL函數等操作時受到限制。最後的語句是按以下格式:

WHERE RecordValue NOT IN ('CSV...') 
WHERE RecordValue IN ('CSV...') 
or combinatnation from both 
RecordValue NOT IN ('CSV...') AND RecordValue IN ('CSV...') 

是否有辦法以這種方式來獲得NULL值嗎?

回答

4

試試這個:

SELECT RecordID,RecordValue 
FROM @TABLE 
WHERE RecordValue NOT IN ('200') OR RecordValue IS NULL 

當值NULL然後用它比較總是NULL所以你必須考慮到這一點。

+0

謝謝。我設法改變了程序以生成這段代碼。 – gotqn

1

像這樣:

SELECT RecordID,RecordValue 
FROM @TABLE 
WHERE ISNULL(RecordValue,'') NOT IN ('200') 
+0

+1謝謝你的回答。 – gotqn