我有一个程序,其中以下条件将写在WHERE
子句中。我如何使用CASE
或类似的东西来做到这一点?
IF (@itemId IS NOT NULL)
dataId = @itemid
答案 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