我有一個表中有很多字段。我正在嘗試在asp.net中創建搜索過濾器,以便用戶可以通過一個或多個字段的組合進行搜索。所以基本上我要創建一個存儲過程,發生在4個PARAMS,它會帕拉姆追加到WHERE子句如果不爲空...SQL篩選查詢
TableExample有4列中,col1 col2的COL3 COL4
我我希望有一種方法可以用單個存儲過程來完成,而不必爲每個可能的組合創建一個。
我正在嘗試這樣的事情,這是不正確的,但它迄今爲止得到的東西。
謝謝!
CREATE PROCEDURE [dbo].[Search]
@Col1 int,
@Col2 int,
@Col3 int,
@Col4 int
AS
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT *
FROM
[dbo].[TestTable]
WHERE
1=1
CASE
WHEN @Col1 IN NOT NULL
THEN AND [Col1] = @Col1
WHEN @Col2 IN NOT NULL
THEN AND [Col2] = @Col2
WHEN @Col3 IN NOT NULL
THEN AND [Col3] = @Col3
WHEN @Col4 IN NOT NULL
THEN AND [Col4] = @Col4
END
那麼什麼是共識,是它更好地只是建立在C#代碼方面的查詢字符串,然後做查詢,而不是試圖有一個存儲過程構建動態?存儲的proc方法似乎有一些缺陷...... – Gabe 2009-07-22 14:34:31