所以我有一个查询。如果我注释掉检查排除的部分,它就可以工作。
WHERE H.BatchId = 3 AND H.IsExcluded != 1
IsExcluded是一个接受NULL值的位字段。
我选择的所有值都是NULL,因此应该是正确的。我究竟做错了什么?它没有按原样返回任何值,但是如果我只注释掉'AND',那么它就可以了。
答案 0 :(得分:9)
WHERE H.BatchId = 3 AND (H.IsExcluded != 1 OR H.IsExcluded IS NULL)
答案 1 :(得分:0)
在SQL NULL!= NULL中,如@scott所说,但您可以使用SET ANSI_NULLS OFF。
Declare @a INT = NULL
Declare @b INT = NULL
SET ANSI_NULLS OFF
IF(@b = @a)
PRINT 'NULL is equal to NULL'
ELSE
PRINT 'NULL is not equal to NULL'
SET ANSI_NULLS ON
IF(@b = @a)
PRINT 'NULL is equal to NULL'
ELSE
PRINT 'NULL is not equal to NULL'
输出是: