我有一个有多个字段的表格。我正在尝试在asp.net中创建搜索过滤器,以便用户可以通过一个或多个字段进行搜索。因此,基本上我想创建一个单个存储过程,它接收4个参数,并且如果其不为null,则将该参数附加到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