在MS SQL中,我遇到了如下查询:
select Wubba, Dubba
from Dub as dub
where Dubba != 10
当Dubba
为null时,select返回零行。由于我正在寻找一个bug,我想知道MS SQL中是否有允许此查询返回值的设置。
答案 0 :(得分:3)
没有设置提供您正在寻找的行为。您可以尝试下面的
Dubba != 10 or dubba is null
使用ISNULL(somecol,val)
不是Sargable
有一个名为SET ANSI_NULLS的设置,但这在比较中不起作用
当SET ANSI_NULLS为ON时,使用WHERE column_name = NULL的 SELECT语句将返回零行,即使column_name中存在空值
当SET ANSI_NULLS为OFF时,使用WHERE column_name = NULL的SELECT语句将返回column_name中具有空值的行
SET ANSI_NULLS is ON
Null<>空
当SET ANSI_NULLS is OFF
Null = Null
但是你要求包含空值,如果列有NULL值,只有获取空值的方法是,指定
进一步阅读Itzik Ben-Gan:
答案 1 :(得分:2)
似乎没有设置,所以你可以使用:
select Wubba, Dubba
from Dub as dub
where ISNULL(Dubba, 0) != 10
答案 2 :(得分:0)
select Wubba, Dubba
from Dub as dub
where Dubba != 10 Or Dubba Is Null
由于没有服务器设置