我有一些代码,其中WHERE子句中使用的变量可以为空。结果,我必须使用IF ELSE查询数据以检查NULL。无论如何,是否可以在一个查询中写入内容?

DECLARE @OrderID UNIQUEIDENTIFIER

IF @OrderID IS NULL
BEGIN
    SELECT *
    FROM Customers
    WHERE OrderID IS NULL
END
ELSE
BEGIN
    SELECT *
    FROM Customers
    WHERE OrderID = @OrderID
END

最佳答案

  SELECT *
  FROM Customers
  WHERE EXISTS (SELECT OrderID INTERSECT SELECT @OrderID)

将有效地做到这一点。

有关更多信息,请参见Undocumented Query Plans: Equality Comparisons

关于sql-server-2008 - 避免由于变量为NULL而导致IF ELSE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19682956/

10-13 05:21