SQL Server: оператор IF в предложении WHERE - PullRequest
0 голосов
/ 31 января 2019

Я не могу заставить оператор IF работать в моем предложении WHERE для SQL Server.

В принципе, если @PK равно 0, я хочу пропустить эти две строки в операторе IF.

Вот что у меня есть:

WHERE
    IF (@PK <> 0)
        pk.ID >= @PK
       AND pk.ID < (@PK + 500)
    ELSE
       Set_No = Set_No
    END
    AND Set_No IN (1,2,3,4)

Также пробовал:

WHERE
    CASE WHEN @PK <> 0
         pk.ID >= @PK
         AND pk.ID < (@PK + 500)
       ELSE
         Set_No = Set_No
    END
    AND Set_No IN (1,2,3,4)

Редактировать: Я искал SO и пробовал несколько вещей, которые нашел (в том числе выше), ноони не работали.

1 Ответ

0 голосов
/ 31 января 2019

Я думаю, что логику, которую вы хотите, легче написать с помощью базовых логических операторов:

WHERE (@PK = 0 OR (pk.ID >= @PK AND pk.ID < @PK + 500)) AND
      Set_No IN (1, 2, 3, 4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...