考虑下面的代码- 有人可以向我解释为什么一个查询不会引发错误吗?我可以理解为什么它不返回记录,但是它想做什么?请记住,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的行为?
那是因为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