Могу ли я добавить предложение if в предложение where

64
7

В хранимой процедуре я имею:

@parameter int

на основе этого параметра я получаю некоторые данные, это может быть -1 или больше 0.

Проблема в том, что если это -1, я не хочу, чтобы этот параметр был в том, где предложение вообще.

Поэтому я пытаюсь сделать что-то вроде:

IF @parameter = -1 THEN
WHERE ...
ELSE
where ... AND Column = @parameter

Но это не работает.

спросил(а) 2021-01-19T14:42:31+03:00 6 месяцев, 1 неделя назад
1
Решение
127

Обычно вы применяете это ограничение следующим образом:

WHERE [...] AND (@parameter = -1 OR Column = @parameter)

ответил(а) 2021-01-19T14:42:31+03:00 6 месяцев, 1 неделя назад
63

where 
@parameter != - 1 AND Column = @parameter

Разница между Dan J и моим ответом заключается в том, что ничего не сопоставляется, если @parameter -1. Дэн J возвращает все, и это поведение, которое вы, вероятно, хотите.

ответил(а) 2021-01-19T14:42:31+03:00 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема