1
我有以下查询(在存储过程运行):SQL Server 2008中 - 忽略空值
DECLARE @BrandId唯一标识符
SELECT * FROM产品p其中p.BrandId = @BrandId
我的问题是 - 当NULL传递到@BrandId查询(正确地)不返回任何结果 - 在那里告诉SQL的方式,当NULL被传递到@BrandId(不使用大量返回所有行的IF语句,即 - IF @BrandId IS NULL等)? - 即当'忽略'where子句的那部分时,如果@BrandId = NULL。
以上是一个简化示例 - 真正的查询更长,并且有多个变量(如@BrandId)可以传递空值 - 并且期望的行为是当它们为空值时不限制查询结果通过。
谢谢!
优秀 - 谢谢! – db1234 2009-09-20 09:58:31
这种形式也容易参数嗅探,可能导致非常糟糕的执行计划,这取决于如何第一次调用过程。 http://sqlinthewild.co.za/index.php/2009/09/15/multiple-execution-paths/ – GilaMonster 2009-09-21 08:45:55