小编典典

为什么“淲HERE列= NULL”不会在SQL Server中引发错误?

sql

考虑下面的代码-
有人可以向我解释为什么一个查询不会引发错误吗?我可以理解为什么它不返回记录,但是它想做什么?请记住,colA是一个int。它在2000、2005和2008
r2上的工作原理相同

create table #foo
( colA int )


insert into #foo
(colA)
values
(null)

select * from #foo --returns the one record we just created

select * from #foo where colA = null --does not throw an error and does not return a record! why??
select * from #foo where colA is null --returns the record

drop table #foo

此表中是否存在可能返回colA = null的记录?

我目前没有其他可用的数据库来尝试这一操作-这是标准还是针对MSSQL的行为?


阅读 116

收藏
2021-04-07

共1个答案

小编典典

那是因为NULL不能等于任何值。

禁用ANSI_NULLS选项,然后运行它,您现在将看到该行:

SET ANSI_NULLS OFF
select * from #foo --returns the one record we just created  
select * from #foo where colA = null --does not throw an error and does not return a record! why?? 
select * from #foo where colA is null --returns the record  drop table #foo
2021-04-07