Использование инструкции IF внутри предложения Where в SQL Server

У меня есть два параметра, которые передаются в функцию, которая передается в строку SQL. Переменные могут быть нулевыми или иметь значение (int). Если x не равен нулю, используйте «этот» столбец, иначе используйте «тот» столбец. Я использую SQL Server.

// Inside a function with two variables passed, x and y
$sql = "
  SELECT
    [...]
  FROM
    [...]
  WHERE
    [...]
    AND [...]
    -- This is the tricky part
    AND
    --- if $x is not null, use foo column else use bar column
    IF (x, R.column = 2, R.another_column = 3)
    [...]
";

Можно ли выбрать столбец на основе значения переданной переменной?


person Sylar    schedule 19.07.2018    source источник
comment
Я думаю, вы просто ищете заявление по делу.   -  person Error_2646    schedule 19.07.2018


Ответы (1)


Если я не ошибаюсь, вам просто нужна логика, иначе сработает оператор case.

$sql = "
  SELECT
    [...]
  FROM
    [...]
  WHERE
    [...]
  AND
    [...]
  -- This is the tricky part
  AND
    --- if $x is not null, use foo column else use bar column
    -- IF (x, R.column = 2, R.another_column = 3)
    (
    (X IS NULL AND R.column = 2)
    OR
    (X IS NOT NULL AND R.another_column = 3)
    )
";
person Error_2646    schedule 19.07.2018