这些查询是否相同?
Are these queries the same?
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)
您得到不同的结果,因为 A 或 B 中某处有 NULL。NULL 不等于 SQL Server
中的 NULL
改用这个。
SELECT a, b FROM foo
WHERE (@a ISNULL or a =@a) AND (@b ISNULL or b=@b)
您还需要在设置变量之前先声明变量。
这两个查询都不会return基于在 a 或 b 中具有 NULL 值的相同结果集。
很简单,因为NULL不等于NULL。
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)
您得到不同的结果,因为 A 或 B 中某处有 NULL。NULL 不等于 SQL Server
中的 NULL改用这个。
SELECT a, b FROM foo
WHERE (@a ISNULL or a =@a) AND (@b ISNULL or b=@b)
您还需要在设置变量之前先声明变量。
这两个查询都不会return基于在 a 或 b 中具有 NULL 值的相同结果集。
很简单,因为NULL不等于NULL。