![](/img/trans.png)
[英]SQL Server stored procedure: if vairable = X, case where statement
[英]CASE in SELECT WHERE statement for stored procedure?
當傳遞空的ManufacturerID時,我需要根據存儲過程BUT中的ManufacturerID過濾表,我需要所有訂單。
我可以在WHERE語句中執行此操作,這樣就不必在SP中將整個查詢寫兩次嗎?
WHERE
@param IS NULL OR field = @param
但是請注意,如果您擴大規模以搜索多列,這將變得非常低效。 (請參閱http://www.sommarskog.se/dyn-search.html )
低效放大版本的示例...
WHERE
(@param1 IS NULL OR field1 = @param1)
AND (@param2 IS NULL OR field2 = @param2)
AND (@param3 IS NULL OR field3 = @param3)
你可以這樣做:
where t.ManufacturerID = @ManufacturerIDParam OR @ManufacturerIDParam is null
嘗試:
WHERE table.field = coalesce(@param, table.field)
這也可能導致參數嗅探問題。 如果可能的話,可能想先清除null嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.