编写一个具有多个输入参数的存储过程。参数可能并不总是有值,可能是空的。但由于存在每个参数可能包含值的可能性,所以我必须包含在查询中使用这些参数的标准。Sql Server IN子句问题
我的查询看起来是这样的:
SELECT DISTINCT COUNT(*) AS SRM
FROM table p
WHERE p.gender IN (SELECT * FROM Fn_SplitParms(@gender)) AND
p.ethnicity IN (SELECT * FROM Fn_SplitParms(@race)) AND
p.marital_status IN (SELECT * FROM Fn_SplitParms(@maritalstatus))
所以我的问题是,如果@gender是空的(”“)查询将返回数据,其中性别字段为空时,我真的想忽略页。性别在一起。我不想用IF/ELSE条件语句来完成这个任务,因为它们太多了。
在这种情况下,有什么办法可以使用IN的CASE吗? OR 有没有其他的逻辑,我只是不理解,将解决这个问题?
无法找到适合的产品...
谢谢!
注意:构建单个查询来完成此操作通常会产生可怕的执行计划。下面的文章是非常深入的,但强调DynamicSQL产生迄今为止最有效的动态搜索。 http://www.sommarskog.se/dyn-search.html – MatBailie 2012-01-05 17:33:34