之所以<>
不起作用是sql对待NULL
未知- 它不知道什么NULL
是应该的意思,所以它会评估=
,并<>
在NULL
值UNKNowN
(在where子句或连接条件视为假)。有关更多信息,请阅读:SQL Server中为什么NULL = NULL评估为false。
如果上面有一个索引,则使用ISNULL函数将意味着该索引无法使用,因此要确保查询可以使用该索引,只需使用OR
:
SELECT *
FROM TableName
WHERE
bit_column_value IS NULL OR bit_column_value = 0