SQL Server:为什么这个查询不返回NULL值?

时间:2017-08-17 00:08:05

标签: sql-server tsql

我有一个表,其中一列名为value,类型为int,其中包含4行:

20
50
NULL
0

为什么此查询仅返回20和50?我也需要NULL值。

SELECT * 
FROM dbo.myTable
WHERE value != 0

3 个答案:

答案 0 :(得分:12)

在SQL中,NULL是一个特殊值,任何东西都不能等于或不等于它。事实上,NULL甚至不等于自己。搜索空值时,必须使用IS运算符。因此,您需要更改查询以包含它们:

SELECT * 
FROM dbo.myTable
WHERE value !=0
OR value IS NULL

答案 1 :(得分:0)

您还可以使用isnullcoalesce

将null替换为其他非零的值
SELECT * 
FROM dbo.myTable
WHERE ISNULL(value,1) <> 0 

答案 2 :(得分:0)

;是“非价值”。一些比较工具将忽略/跳过每个,。 (NULL不存在。)

您有3个选项:

1)插入值NULL而不是NULL。例如:设置默认(42)

2)将NULL添加到您的查询条件中。

ALTER TABLE myTable ADD CONSTRAINT DF_mytable_value DEFAULT (42) FOR value

3)将您的WHERE clausel中的每个NULLSELECT * FROM myTable WHERE value != 1 OR value IS NULL 0的每个0进行比较:

else