为什么select * from [table] where [table].[column] != null
不能用于我的查询,结果为空。
但是select * from [table] where [table].[column] is not null
正在运作,并找到[table].[column]
填充null
的记录!
Microsoft SQL Server中!= null
和is not null
之间的区别是什么?
答案 0 :(得分:4)
NULL
不是值。这意味着“未知”或“数据缺失”等内容。
如果您没有任何关于(=
,!=
运营商)的任何信息,您无法确定某些您没有任何相关信息的内容。但您可以说是否有任何可用信息(IS NULL
,IS NOT NULL
)。
恕我直言,实际上它并不是很有用。但事实就是如此,而且历史悠久。
答案 1 :(得分:2)
您无法使用=
运算符与NULL进行比较,因为NULL表示未知值,因此您无法将某些内容与某些未知值相提并论。这就是提供IS NULL
子句以过滤列为null
的行的原因。
在SQL Server中阅读有关THREE VALUED LOGIC的更多信息。