T-SQL WHERE NOT IN没有捕获NULL值

时间:2012-09-11 11:52:27

标签: tsql null where

这是我的代码:

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') 

输出:

1 100

欲望输出:

1 100

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值?

2 个答案:

答案 0 :(得分:4)

试试这个:

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

当值为NULL时,与其进行比较始终为NULL,因此您必须将其考虑在内。

答案 1 :(得分:1)

像这样:

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