我想搜索/过滤一些包含多个参数的表。但我希望如果我将一些参数发送为0或null值,它将不会对该列进行过滤。
ALTER PROCEDURE [dbo].[Search_Load]
,@Name nvarchar(200)
,@User_ID int
SELECT
[Type]
,[Record_ID]
,[First_Name]+SPACE(1)+[Last_Name] AS Full_Name
FROM [dbo].[Process]
WHERE [Name] = @Name
AND [User_ID] = @User_ID
这是我的过程。如果我发送@Name
和@User_ID
,则会对这两者进行过滤;如果我发送@User_ID
,则必须仅过滤[User_ID]
,或对其他过滤相同。如果发送@Name = ''
和@User_ID = 0
,则应返回未经过滤的数据。
我怎么能这么容易地做到这一点?
答案 0 :(得分:0)
好吧,你可以使用or
条款
我只使用@Name,在你的样本中混合@Name和@Table_Name
WHERE (coalesce(@Name, '') = '' or [Name] = @Name)
AND (coalesce(@User_ID, 0) = 0 or [User_ID] = @User_ID)