TSQL:当你可以或不发送参数时如何处理WHERE子句
TSQL: How to deal with the WHERE clause when you may or not send parameters
这是我在过滤代码中所做的事情。我如何在 SPROC 中获得相同的东西?
var projects = _context.Projects.AsQueryable();
if (parameterList.OfficeIds)
{
projects = projects.Where(x => parameterList.OfficeIds.Contains( x.OfficeId));
}
var list = projects.ToListAsync();
我知道如何发送逗号分隔值作为参数。我的重点是如何在 SPROC 中应用条件 WHERE 子句。
当有要查找的 ID 时,我可以发送类似 SqlParameter("@value1", value1), SqlParameter("@value2", value2)
的内容
SELECT * FROM Projects WHERE OfficeId IN ({0})
现在没有参数发送怎么办,我该如何处理WHERE子句?
感谢您的帮助
我在工作中经常使用它。
DECLARE @UserId int
SELECT *
FROM Users u
WHERE UserId = ISNULL(@UserId, u.UserId)
或
DECLARE @CSV VARCHAR(8000)
SELECT *
FROM Projects p
WHERE P.OfficeId IN (select * from dbo.fn_Splitter(@CSV)) OR @CSV IS NULL
因此,如果您为参数传递一个值,它将使用该参数的值并过滤您的行。如果你没有为参数传递一个值,或者它是空的,它只会忽略 WHERE 子句和 return 来自 table.
的所有记录
这是我在过滤代码中所做的事情。我如何在 SPROC 中获得相同的东西?
var projects = _context.Projects.AsQueryable();
if (parameterList.OfficeIds)
{
projects = projects.Where(x => parameterList.OfficeIds.Contains( x.OfficeId));
}
var list = projects.ToListAsync();
我知道如何发送逗号分隔值作为参数。我的重点是如何在 SPROC 中应用条件 WHERE 子句。
当有要查找的 ID 时,我可以发送类似 SqlParameter("@value1", value1), SqlParameter("@value2", value2)
SELECT * FROM Projects WHERE OfficeId IN ({0})
现在没有参数发送怎么办,我该如何处理WHERE子句?
感谢您的帮助
我在工作中经常使用它。
DECLARE @UserId int
SELECT *
FROM Users u
WHERE UserId = ISNULL(@UserId, u.UserId)
或
DECLARE @CSV VARCHAR(8000)
SELECT *
FROM Projects p
WHERE P.OfficeId IN (select * from dbo.fn_Splitter(@CSV)) OR @CSV IS NULL
因此,如果您为参数传递一个值,它将使用该参数的值并过滤您的行。如果你没有为参数传递一个值,或者它是空的,它只会忽略 WHERE 子句和 return 来自 table.
的所有记录