2013-11-01 3 views
2

Я пытаюсь написать что-то вроде:SQL Server 2008 ИНЕКЕ с CASE/когда и NULL значение

SELECT * 
FROM MyTable m 
WHERE m.Category = CASE WHEN @Category IS NULL THEN m.Category ELSE @Category END 

В принципе, мне нужны линии, где m.Category равняется @Category если один имеет значение; else, мне нужны все строки.

НО если m.Category имеет NULL значение, линия НЕ отправить обратно, потому что SQL нужно что-то Лиле WHERE m.Category IS NULL и не WHERE m.Category = NULL.

Итак, как я мог бы изменить мою просьбу сообщить в SQL: «Мне нужны все строки, если @Category равно нуль (четные строки, где m.Category нулевой), но если @Category имеет значение, мне просто нужны линии, где m.Category Удачные @Category ?

ответ

3

вы можете написать это:

select * 
from MyTable m 
where @Category is null or m.Category = @Category 
+0

Хорошо, это было так просто, я даже не думаю об этом ... Большое спасибо – AlexB

+0

@ романо-пекарем - что вы называете это? Я использовал его около 5 лет назад и нуждался в нем сегодня, и я не мог для жизни меня сообщите, что он называется. – Steven

+0

@Steven хорошо, я не знаю, не уверен, что у него есть определенное имя –

Смежные вопросы