如何根据参数值设置条件 where 子句

Sim*_*ons 0 sql sql-server sql-server-2008

我有以下 SQL,

DECLARE @EmployeeID Int

SELECT *
  FROM [Northwind].[dbo].[Orders]
  WHERE OrderID = 10248
  AND EmployeeID = @EmployeeID
Run Code Online (Sandbox Code Playgroud)

我想确定 IF @EmployeeID IS NULL然后不包括AND

就像是,

SELECT *
  FROM [Northwind].[dbo].[Orders]
  WHERE OrderID = 10248
  IF @EmployeeID IS NOT  NULL
  AND EmployeeID = @EmployeeID
Run Code Online (Sandbox Code Playgroud)

我可以考虑创建一个表变量,然后根据参数值对其进行过滤,但是有没有更好的方法?

Gor*_*off 6

我想你想要:

WHERE OrderID = 10248 AND
      (@EmployeeId IS NULL OR EmployeeID = @EmployeeID)
Run Code Online (Sandbox Code Playgroud)