查询null布尔字段

时间:2016-11-22 22:52:31

标签: sql sql-server tsql

查询null的布尔字段时为什么

Select * From MyTableName where [boolfieldX] <> 1

在[boolfieldX]中没有返回任何带空值的行? 1&lt; 1&gt; null我希望返回带有null的行。

3 个答案:

答案 0 :(得分:2)

无法使用比较运算符测试NULL值,例如=<<>

您必须使用IS NULLIS NOT NULL运算符,或者必须使用ISNULL()COALESCE()等函数

Select * From MyTableName where [boolfieldX] <> 1 OR [boolfieldX] IS NULL

Select * From MyTableName where ISNULL([boolfieldX],0) <> 1

Stackoverflow Documentation

中详细了解空比较

详细了解Stackoverflow Documentation

中的ISNULL()COALESCE()函数

答案 1 :(得分:1)

我相信它是因为null是一个未知值。您无法查询未知的值&#39;。在我看来,将null称为“值”&#39;是一种矛盾,因为它代表了一个未知的。使用运算符&#34; Is Null&#34;并且&#34;不是空的&#34;与任何选择标准一起将返回所需的结果,或通过将空值转换为替换值来进行翻译将如下所示:IsNull([boolfield],&#39;某些兼容值&#39;)

答案 2 :(得分:-2)

您好尝试使用此查询:

select * from mytablename where [boolFieldX] is null And [boolFieldX] <> 1