SELECT a,b FROM foo
与SELECT 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)
答案 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。