是否有ms sql设置允许值!= null为true

时间:2016-10-19 15:50:00

标签: sql-server

在MS SQL中,我遇到了如下查询:

select Wubba, Dubba
from Dub as dub
where Dubba != 10

Dubba为null时,select返回零行。由于我正在寻找一个bug,我想知道MS SQL中是否有允许此查询返回值的设置。

3 个答案:

答案 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

Don’t Avoid the UNKNOWN
Predicate-Based Query Filters

答案 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

由于没有服务器设置