我有一个表,其中一列名为value,类型为int,其中包含4行:
20
50
NULL
0
为什么此查询仅返回20和50?我也需要NULL值。
SELECT *
FROM dbo.myTable
WHERE value != 0
答案 0 :(得分:12)
在SQL中,NULL
是一个特殊值,任何东西都不能等于或不等于它。事实上,NULL
甚至不等于自己。搜索空值时,必须使用IS
运算符。因此,您需要更改查询以包含它们:
SELECT *
FROM dbo.myTable
WHERE value !=0
OR value IS NULL
答案 1 :(得分:0)
您还可以使用isnull
或coalesce
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中的每个NULL
与SELECT *
FROM myTable
WHERE value != 1 OR value IS NULL
和0
的每个0
进行比较:
else