У меня есть процедура, в которой условие ниже должно быть записано в предложении WHERE
. Как мне это сделать, используя CASE
, или что-то в этом роде?Заявление CASE в предложении WHERE
IF (@itemId IS NOT NULL)
dataId = @itemid
У меня есть процедура, в которой условие ниже должно быть записано в предложении WHERE
. Как мне это сделать, используя CASE
, или что-то в этом роде?Заявление CASE в предложении WHERE
IF (@itemId IS NOT NULL)
dataId = @itemid
Вам не нужен случай для что:
... where @itemId is null or dataId = @itemId ...
Или:
... where isnull(@itemId, dataId) = dataId ...
Case When @ItemId Is Not Null And dataId = itemId Then 1 Else 0 End = 0
Если dataId не обнуляемым, то вы можете упростить его:
dataId = Coalesce(@ItemId, dataId)
Или, используя выражение Case
dataId = Case When @ItemId Is Null Then itemId Else dataId End
Вы можете сделать что-то вроде этого:
SELECT dataId = CASE WHEN @itemId IS NOT NULL THEN @itemId
ELSE dataId END
FROM YourTable
Это действительно 'itemid' и не' @ itemId' во второй строке? – Guffa
жаль, что это должно быть @ itemId.forgot, чтобы добавить @ – 2010-07-19 14:31:17
Насколько велика ваша таблица, к которой можно добраться? Все эти методы действительно подходят только для небольших столов. –