将结果与零进行比较后,SQL Query不会返回NULL值

时间:2013-07-24 18:38:05

标签: sql-server

我正在使用MSSQL 2008。 我试图做这样的事情:

select  Name, AcctBal 
from Table1 
where AcctBal <> '0.00'

为什么此查询不会返回AcctBal NULL个值?

4 个答案:

答案 0 :(得分:5)

要将列值与NULL进行比较,您必须使用IS NULLIS NOT NULL

select  Name, AcctBal from Table1 where AcctBal <> '0.00' OR AcctBal IS NULL

答案 1 :(得分:4)

这是因为NULL不是特定的nummeric值或任何其他值。如果您还想查看具有NULL的te记录,则应将where语句更改为:其中AcctBal&lt;&gt; '0.00'或AcctBall为空

答案 2 :(得分:2)

与null的比较是假的 需要添加

or AcctBal is null

答案 3 :(得分:0)

所有以前的答案都是正确的,基于ANSI标准,但SQL Server确实提供了一个覆盖它的开关(我不建议使用它,但有助于理解整个图片)。

SET ANSI_NULLS ON -- this is ON by default
SELECT CASE WHEN 1 <> NULL THEN 'true' ELSE 'false' END AS Answer

SET ANSI_NULLS OFF
SELECT CASE WHEN 1 <> NULL THEN 'true' ELSE 'false' END AS Answer

此外,重要的是要实现与NOT IN(一个讨厌的陷阱)相同的行为:

SET ANSI_NULLS ON -- this is ON by default
SELECT CASE WHEN NULL NOT IN (1,2,3) THEN 'not there' ELSE 'there' END