編寫一個具有多個輸入參數的存儲過程。參數可能並不總是有值,可能是空的。但由於存在每個參數可能包含值的可能性,所以我必須包含在查詢中使用這些參數的標準。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