如何有基于参数值的条件 where 子句
Posted
技术标签:
【中文标题】如何有基于参数值的条件 where 子句【英文标题】:How to have conditional where clause based on parameter value 【发布时间】:2017-10-04 00:40:29 【问题描述】:我有以下 SQL,
DECLARE @EmployeeID Int
SELECT *
FROM [Northwind].[dbo].[Orders]
WHERE OrderID = 10248
AND EmployeeID = @EmployeeID
我要确定IF @EmployeeID IS NULL
然后不包括AND
类似的,
SELECT *
FROM [Northwind].[dbo].[Orders]
WHERE OrderID = 10248
IF @EmployeeID IS NOT NULL
AND EmployeeID = @EmployeeID
我可以考虑创建一个表变量,然后根据参数值对其进行过滤,但是有没有更好的方法?
【问题讨论】:
参考***.com/questions/87821/… 【参考方案1】:我想你想要:
WHERE OrderID = 10248 AND
(@EmployeeId IS NULL OR EmployeeID = @EmployeeID)
【讨论】:
【参考方案2】:DECLARE @EmployeeID Int
SELECT *
FROM [Northwind].[dbo].[Orders]
WHERE OrderID = 10248
AND EmployeeID = ISNULL(@EmployeeID, EmployeeID )
【讨论】:
以上是关于如何有基于参数值的条件 where 子句的主要内容,如果未能解决你的问题,请参考以下文章
将过程参数传递给 SELECT INTO where 子句不起作用