这些查询是否相同?

时间:2016-08-10 23:47:19

标签: sql sql-server reporting-services where

SELECT a,b FROM fooSELECT a,b FROM foo WHERE a=a and b=b相同吗?

我跑的时候会得到不同的结果。

最终,我正在尝试将我的SSRS报告的参数设置为:

SET @a Varchar (20) DECLEARE @a = Null SET @b Varchar (20) DECLEARE @b = Null SELECT a,b FROM foo WHERE a=isnull(@a,a) and b=isnull(@b,b)

2 个答案:

答案 0 :(得分:1)

您得到的结果不同,因为A或B中的某处有NULL。在SQL Server中,NULL不等于NULL

请改用它。

SELECT a, b FROM foo
WHERE (@a ISNULL or a =@a) AND (@b ISNULL or b=@b)

此外,您需要在设置变量之前对其进行声明。

答案 1 :(得分:0)

两个查询都不会根据a或b中的NULL值返回相同的结果集。

只是因为NULL不等于NULL。