当查询布尔字段为空,为什么查询空布尔字段
Select * From MyTableName where [boolfieldX] <> 1
未与[boolfieldX]空返回任何行? 1 <> null我会有预期的行返回null。
当查询布尔字段为空,为什么查询空布尔字段
Select * From MyTableName where [boolfieldX] <> 1
未与[boolfieldX]空返回任何行? 1 <> null我会有预期的行返回null。
无法使用比较运算符(例如=
,<
或<>
)测试NULL
值。
您必须使用IS NULL
和IS NOT NULL
运营商来替代,或者你要使用的功能,如ISNULL()
和COALESCE()
Select * From MyTableName where [boolfieldX] <> 1 OR [boolfieldX] IS NULL
OR
Select * From MyTableName where ISNULL([boolfieldX],0) <> 1
了解更多关于空比较Stackoverflow Documentation
Read mo再在Stackoverflow Documentation
约ISNULL()
和COALESCE()
功能嗨尝试使用此查询:
select * from mytablename where [boolFieldX] is null And [boolFieldX] <> 1
我认为,这是因为空是一个未知的值。您无法查询未知的“值”。在我看来,将null看作一个“价值”是一个矛盾,因为它代表一个未知数。使用运算符“空”和“不空”连同任何选择条件将返回所需的结果,或通过将空值转换为替代值来进行转换将如下工作:IsNull([boolfield],'一些兼容值')
[@Graham](https://stackoverflow.com/users/641914/graham)请尝试鼓励修复链接到文档,而不是直接删除链接和周围段落,留下评论。 –