查询null的布尔字段时为什么
Select * From MyTableName where [boolfieldX] <> 1
在[boolfieldX]中没有返回任何带空值的行? 1&lt; 1&gt; null我希望返回带有null的行。
答案 0 :(得分:2)
无法使用比较运算符测试NULL
值,例如=
,<
或<>
。
您必须使用IS NULL
和IS NOT NULL
运算符,或者必须使用ISNULL()
和COALESCE()
等函数
Select * From MyTableName where [boolfieldX] <> 1 OR [boolfieldX] IS NULL
或强>
Select * From MyTableName where ISNULL([boolfieldX],0) <> 1
中详细了解空比较
详细了解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