每一行有沒有在where子句做以下類型的OR條件SQL或條款不讀表
WHERE (@TestID IS NULL OR t.[ID] = @TestID)
我遇到的問題的一個更好的方法是有很多的,這些在WHERE對不同變量的條款,它造成巨大的數字或讀取。我試圖完成的是如果參數是NULL不評估它,如果它不是NULL然後評估它。我想出了迄今唯一的解決辦法是打破這些進入巨大的查詢檢查填充什麼,並定製查詢這樣的:
IF @TestID IS NOT NULL
....
ELSE IF @TestID IS NULL
....
這變得非常繁瑣和艱苦的許多變量來維護。
這值得一讀:http://blogs.msdn.com/b/bartd/archive/2009/05/03/sometimes-the-simplest-solution-isn-t-the-best-solution-the- all-in-one-search-query.aspx – 2014-10-09 21:23:57
@TimSchmelter這是一篇很好的文章,但有一個更好的方法可以使用證書在動態sql案例中授予權限。請參閱http://www.sommarskog.se/grantperm.html#Certificates – Laurence 2014-10-09 21:29:06
以下是一篇文章,詳細解釋了處理此類捕獲所有查詢的多種方法。 http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/ – 2014-10-09 21:30:36