我有一张表,里面有很多字段。我正在尝试在 asp.net 中创建搜索过滤器,以便用户可以通过一个或多个字段组合进行搜索。所以基本上我想创建一个接收4个参数的存储过程,如果它不为空,它将把参数附加到WHERE子句......
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