使用!=查询具有一些NULL值的字段

时间:2010-12-29 20:43:33

标签: sql-server-2005

我有报告引用SQL Server中的视图。用户可以对char字段进行过滤,但是当他们使用“!=”过滤值时,会过滤掉具有该值的记录以及该字段中具有NULL值的任何记录。我在报告之外测试了这个,通过将过滤器放在SQL代码的WHERE子句中并获得相同的结果。为什么会这样?我怎样才能解决这个问题?

例如:

SELECT f1, f2, f3
FROM aTable

 f1   f2   f3
---- ---- ----
 Y    Y    NULL
 Y    N    M
 N    Y    N
 Y    N    NULL

SELECT f1, f2, f3
FROM aTable
WHERE f3 != 'N'

 f1   f2   f3
---- ---- ----
 Y    N    M

如果您需要其他信息,请与我们联系。

您可以提供的任何见解都会有所帮助: - )

谢谢,

2 个答案:

答案 0 :(得分:5)

使用NULL的比较操作始终评估为false。您可以使用:

WHERE f3 is null or f3 != 'N'

答案 1 :(得分:0)

您可以使用ISNULL功能

SELECT f1, f2, f3 FROM aTable WHERE ISNULL(f3,'')!='N'