2010-07-19 3 views
1

У меня есть процедура, в которой условие ниже должно быть записано в предложении WHERE. Как мне это сделать, используя CASE, или что-то в этом роде?Заявление CASE в предложении WHERE

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

Это действительно 'itemid' и не' @ itemId' во второй строке? – Guffa

+0

жаль, что это должно быть @ itemId.forgot, чтобы добавить @ – 2010-07-19 14:31:17

+2

Насколько велика ваша таблица, к которой можно добраться? Все эти методы действительно подходят только для небольших столов. –

ответ

4

Вам не нужен случай для что:

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

Или:

... where isnull(@itemId, dataId) = dataId ... 
2
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 
1

Вы можете сделать что-то вроде этого:

SELECT dataId = CASE WHEN @itemId IS NOT NULL THEN @itemId 
     ELSE dataId END 
FROM YourTable 
Смежные вопросы