如果参数不为空,则搜索多列?

时间:2014-11-13 12:20:03

标签: sql sql-server tsql

我想搜索/过滤一些包含多个参数的表。但我希望如果我将一些参数发送为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,则应返回未经过滤的数据。 我怎么能这么容易地做到这一点?

1 个答案:

答案 0 :(得分:0)

好吧,你可以使用or条款

我只使用@Name,在你的样本中混合@Name和@Table_Name

WHERE   (coalesce(@Name, '') = '' or [Name] = @Name)
  AND   (coalesce(@User_ID, 0) = 0 or [User_ID] = @User_ID)