我有一個列的表名爲值類型爲int,和4行是:SQL Server:爲什麼這個查詢不返回NULL值?
20
50
NULL
0
爲什麼這個查詢返回20和50只?我也需要NULL值。
SELECT *
FROM dbo.myTable
WHERE value != 0
我有一個列的表名爲值類型爲int,和4行是:SQL Server:爲什麼這個查詢不返回NULL值?
20
50
NULL
0
爲什麼這個查詢返回20和50只?我也需要NULL值。
SELECT *
FROM dbo.myTable
WHERE value != 0
在SQL中,NULL
是一個特殊值,沒有任何東西可以永遠等於或不等於它。實際上,NULL
甚至不等於自己。搜索空值時,您必須使用IS
運算符。所以,你需要改變你的查詢,包括他們:
SELECT *
FROM dbo.myTable
WHERE value !=0
OR value IS NULL
您也可以替換空爲其他某事究竟是不是使用isnull
或3210
SELECT *
FROM dbo.myTable
WHERE ISNULL(value,1) <> 0
NULL
零是一個「非價值」 。一些比較工具將忽略/跳過每個NULL
's。 (NULL
不存在。)
你有3個選項:
1)插入值(42)
,而不是NULL
。例如:設置默認值ALTER TABLE myTable ADD CONSTRAINT DF_mytable_value DEFAULT (42) FOR value
2)將NULL
添加到您的查詢條件。
SELECT *
FROM myTable
WHERE value != 1 OR value IS NULL
3)比較你在哪裏clausel內的每一個0
爲0
,每else
爲1
:
SELECT *
FROM myTable
WHERE 1 = CASE value WHEN 0 THEN 0 ELSE 1