2012-03-22 134 views
1

我已经在SQL Server 2008的Sql相同的查询,但示出了不同的结果

select select * from program 
where program_description <> null 

书写的查询但是,上述查询的结果是空白的。 而下面的查询显示了我想要的结果。

select * from program 
where program_description is not null 

它们之间有什么区别吗?

+0

可能重复[什么是“= null”和“IS NULL”](http://stackoverflow.com/questions/2749044/what-is-null-and-is-null) – billinkc 2012-03-22 12:26:27

回答

3

是,=和<>不适用于null。 您必须使用IS NULL或IS NOT NULL

+0

好的工作TGH.keep这个好工作 – 2012-03-22 08:44:48

+0

我们可以使用!=运算符进行空值比较 – 2012-03-22 12:41:30

+0

!=不是sql运算符... – TGH 2012-03-23 05:25:15

3

是的,有区别。与null比较将总是导致unknown

这就是为什么你需要is null

+0

我想获得那些记录的输出,只有在哪个program_description值不应该为null。可以请你解释一下更深入地回答。 – 2012-03-22 05:40:00

+0

@manojkumarsingh,'null'表示值为'null'。 '不为空'表示该值不是'null'。 '<> null'不符合你的期望,请使用'not null'代替。 – rid 2012-03-22 05:43:01

+0

@manojkumarsingh:请参阅[使用NULL](http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html) – 2012-03-22 05:46:08

1

比较null结果是,所不同的是 - 根据标准,与空返回NULL的所有操作。包括<>。检查空值的唯一有效方法是操作'为空'。

+1

根据*标准*,比较的结果是'unknown',而不是'null',一些实现混淆了这两个概念,其他的则没有。 – 2012-03-22 06:01:55

+0

该标准包含运算符'IS [NOT] NULL'和'IS [NOT] DISTINCT FROM',它们始终评估为TRUE或FALSE,从不UNKNOWN。 – onedaywhen 2012-03-22 08:16:08

相关问题