2016-10-19 29 views
4

在MS SQL我来翻过查询象下面这样:!是否有MS SQL设置,允许值= NULL是真实

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

Dubba为空,选择返回零行。由于即时通讯寻找一个错误,我想知道是否有在MS SQL中的设置,这将允许此查询返回值。

+0

SQL使用三值逻辑。 true,false,null。通过设计。如果你的'错误'导致Non-nulls输入空值......那么这是一个heckava错误,它完全破坏了你的RDBMS。 –

回答

3

没有设置,提供你正在寻找for..you可以试试下面

Dubba != 10 or dubba is null 

使用ISNULL(somecol,val)行为是不Sargable

有一个名为SET ANSI_NULLS设置,但这不会在比较中工作

当SET ANSI_NULLS为ON时,使用WHERE column_name = NULL的SELECT语句返回ze即使有在列名空值R0行

当SET ANSI_NULLS为OFF时,使用WHERE列名= NULL返回有列名空值的行的SELECT语句

SET ANSI_NULLS is ON空<>空
SET ANSI_NULLS is OFF空= NULL

但是你问到包括空值,如果列有NULL值,只有这样,才能为空值,指定

Itzik Ben-Gan延伸阅读:

Don’t Avoid the UNKNOWN
Predicate-Based Query Filters

0
select Wubba, Dubba 
from Dub as dub 
where Dubba != 10 Or Dubba Is Null 

由于没有服务器设置

2

看来是没有设置,所以你可以使用:

select Wubba, Dubba 
from Dub as dub 
where ISNULL(Dubba, 0) != 10 
相关问题