SQL Switch / Case в предложении where со значением NULL - PullRequest
0 голосов
/ 17 октября 2018

Мой вопрос очень похож на Переключатель / регистр SQL, в котором пункт .

Я получаю параметры.Если ожидается, что значение равно NULL, мне нужно получить все значения, в противном случае мне нужно отфильтровать с значением .

Я пытаюсь сделать этов SQL:

    WHERE param 
      CASE
       WHEN #{value} IS NULL THEN {IS NOT NULL}
       ELSE =#{value}
      END

Как мне исправить этот запрос SQL?

       WHERE param IS NOT NULL // all values if **value** is NULL
       WHERE param = #{value}  // i.e. value = 'data'

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Если я вас понимаю, если переданный параметр равен нулю, тогда возвращаются все строки, для которых столбец не равен нулю, а если он имеет значение, то те, которые имеют значение.Тогда вы должны использовать:

where param is NOT NULL OR param = #{value}
0 голосов
/ 17 октября 2018

Обычно это делается с помощью такой логики:

where #{value} is NULL or #{value} = param

Я предполагаю, что #{value} - это передаваемое значение, а param - некоторый столбец в таблице.

...