SQL если в где - PullRequest
       24

SQL если в где

1 голос
/ 21 июня 2020

Я хочу написать такой запрос sql под логами c:

when nn not null then dn like 'id=$nn$%' 
when user_id = $usrid$
when field1 not null then field1= $wid;

Я пишу его для поиска по splunk.

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

1 Ответ

0 голосов
/ 21 июня 2020

Похоже, вам нужно включить их в свои where условия, с некоторыми небольшими поправками к тому, что вы написали выше.

SELECT *
FROM TableName
WHERE (nn IS NULL OR dn like 'id=' + @nn + '%')
  AND (user_id = @usrid)
  AND (field1 IS NULL OR field1 = $wid)

Для первого и третьего условий мы инвертируем logi c по нулевой проверке и OR с фактическими критериями. Таким образом, например, field1=$wid оценивается только тогда, когда field1 равно not null (поскольку он, если он равен нулю, первая часть критерия - field1 IS NULL - оценивается как истина.

Я также изменил ваш $param$ синтаксис к более распространенному @param, хотя он может варьироваться в зависимости от вашего sql вкуса.

Наконец, я не думаю, что здесь подходит оператор case (как рекомендуют некоторые комментаторы), потому что вы хотите фильтровать разные столбцы по-разному, а не выводить по-разному для одного столбца на основе критериев (для которых вы обычно используете оператор CASE).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...