WHERE子句中的CASE语句

时间:2010-07-19 14:22:30

标签: sql sql-server

我有一个程序,其中以下条件将写在WHERE子句中。我如何使用CASE或类似的东西来做到这一点?

IF (@itemId IS NOT NULL)
  dataId = @itemid 

3 个答案:

答案 0 :(得分:4)

您不需要案例:

... where @itemId is null or dataId = @itemId ...

或者:

... where isnull(@itemId, dataId) = dataId ...

答案 1 :(得分:2)

Case When @ItemId Is Not Null And dataId = itemId Then 1 Else 0 End = 0

如果dataId不可为空,那么您可以将其简化为:

dataId = Coalesce(@ItemId, dataId) 

或使用案例表达

dataId = Case When @ItemId Is Null Then itemId Else dataId End

答案 2 :(得分:1)

您可以这样做:

SELECT dataId = CASE WHEN @itemId IS NOT NULL THEN @itemId 
        ELSE dataId END
 FROM YourTable