[英]Ignore parameter in stored procedure If null
我正在尝试通过存储过程在表上进行多输入搜索 function。
我有四个输入参数:一个布尔值和 3 个字符串。 当我运行 1 个字符串和一个布尔值时,我得到了预期的行。
一旦我尝试将 2 和 3 输入(字符串)添加到搜索中,我就没有返回任何数据。 如果我填写了所有 3 个输入(字符串),它应该返回与这些字符串相关的行。
如果输入为空...那么它应该跳过查询的那部分
存储过程如下所示:
ALTER PROCEDURE [dbo].[GetUsers]
@Online BIT = NULL,
@UserName NVARCHAR(150) = NULL,
@EmailAddress NVARCHAR(150) = NULL,
@Location NVARCHAR(50) = NULL
AS
SELECT *
FROM Users
WHERE (ISNULL(@Online, 0) = 0 OR (@Online = 1 AND Online = 1))
AND (ISNULL(@UserName, UserName) = UserName OR UserName LIKE '%' + @UserName + '%' )
AND (ISNULL(@EmailAddress, EmailAddress) = EmailAddress OR EmailAddress LIKE '%' + @EmailAddress + '%')
AND (ISNULL(@Location, Location) = Location OR Location LIKE '%' + @Location + '%' )
ORDER BY
Users
FOR XML PATH('Users'), ROOT('Users')
RETURN 0
尝试这个
WHERE ( (@Online Is Null) or (@Online = 1 AND Online = 1))
AND ( (@UserName is null) OR (UserName LIKE '%' + @UserName + '%' ) )
AND (( @EmailAddress is null) or ( EmailAddress LIKE '%' + @EmailAddress + '%'))
AND ( (@Location is null) or ( Location LIKE '%' + @Location + '%' ))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.