Условная проверка в предложении SQL WHERE - PullRequest
2 голосов
/ 30 июня 2011

Мне нужно сделать условное утверждение в моем предложении where, аналогичном

WHERE
IF(@Param = 0) THEN
Column1 != 7

Я пытаюсь разрешить пользователю исключать набор записей на основе значения @ Param.

Ответы [ 3 ]

7 голосов
/ 30 июня 2011

Вы можете объединить их в одно условие:

WHERE
(@Param != 0 OR Column1 != 7)

Для более сложных условий вы также можете полагаться на выражения CASE (но отметьте, что это выражения и должны возвращатьзначение здесь 1 или (по умолчанию) NULL):

WHERE
    CASE WHEN @Param = 0 THEN
         CASE WHEN Column1 != 7 THEN 1 END
    WHEN @Param = 2 THEN
         CASE WHEN Column2 in (1,3,19) THEN 1 END
    END =  1
4 голосов
/ 30 июня 2011

Попробуйте

Where (@Param = 0 And Column1 != 7)

Если часто делаешь что-то вроде ...

Where (@Param1 Is Null Or (Column1 = @Param1)) 
And   (@Param2 Is Null Or (Column2 = @Param2)) 

Есть хорошая статья о том, где оговорки здесь ... http://weblogs.sqlteam.com/jeffs/archive/2003/11/14/513.aspx

0 голосов
/ 30 июня 2011
WHERE (@Param = 0 AND Column1 != 7) AND ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...