Sql 如果参数不为null,是否搜索多个列?
我想搜索/筛选一些具有多个参数的表。但我希望,如果我将一些参数作为0或null值发送,它将不会对该列进行筛选Sql 如果参数不为null,是否搜索多个列?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想搜索/筛选一些具有多个参数的表。但我希望,如果我将一些参数作为0或null值发送,它将不会对该列进行筛选 ALTER PROCEDURE [dbo].[Search_Load] ,@Name nvarchar(200) ,@User_ID int SELECT [Type] ,[Record_ID]
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\u ID,则它必须是仅筛选的[User\u ID],或者对其他用户相同。如果send@Name=和@User_ID=0,则应返回未过滤的数据。
我怎样才能轻松地做到这一点呢?嗯,你可以使用or子句
我只使用@Name,在您的示例中,您混合使用@Name和@Table\u Name
WHERE (coalesce(@Name, '') = '' or [Name] = @Name)
AND (coalesce(@User_ID, 0) = 0 or [User_ID] = @User_ID)
我会在代码中尝试,我在尝试缩短代码时混合了它们:上面更紧凑的变化:在哪里coalescenullif@name,[name]=[name]至少我发送了0,或者,我不能像那样工作,尽管它可以工作,并且0=@Record\u User\u ID或PL.[Record\u User\u ID]=@Record\u User\u ID是这样的。