2016-10-19 35 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 
相關問題