Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果参数不为null,是否搜索多个列?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如果参数不为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]

我想搜索/筛选一些具有多个参数的表。但我希望,如果我将一些参数作为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\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是这样的。