Кто-нибудь знает, как лучше написать это заявление SQL? - PullRequest
1 голос
/ 24 сентября 2010

У меня есть IF оператор в моей хранимой процедуре:

if ((@someParam = 'C') OR (@someParam = 'I' AND @SomeOtherParam <> 2 AND @SomeOtherParam <> 4 AND @SomeOtherParam <> 5))

У меня вопрос: можно ли проверить @SomeOtherParam за один выстрел вместо необходимости проверять его 3 раза?

Ответы [ 4 ]

6 голосов
/ 24 сентября 2010

Это должно помочь:

if ((@someParam = 'C') OR (@someParam = 'I' AND @SomeOtherParam NOT IN (2,4,5))) 

IN принимает список значений и возвращает true, если ваше значение найдено в списке.Добавление NOT означает, что оно вернет true, если ваше значение не найдено.

1 голос
/ 24 сентября 2010

Попробуйте

if (@SomeOtherParam  NOT IN (2, 4, 5))
1 голос
/ 24 сентября 2010

возможно что-то с инструкциями CASE:

if case @someparam when 'C' then 1 when 'I' then @someotherparam NOT IN (2,4,5) else 0 end
0 голосов
/ 24 сентября 2010

Существует также EXISTS ключевое слово в SQL, которое вы можете использовать

if not EXISTS (select * from list where my_column= @someotherparam )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...