Как написать параметризованный запрос в операторе case с операторами REGEXP_LIKE и LIKE - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь написать параметризованный запрос в выражении case, но я не совсем уверен в синтаксисе. Примерно так:

SELECT column1
FROM TABLE1
WHERE
CASE %(parameter)s
    WHEN '\|||()|[]|+' THEN REGEXP_LIKE (column1, %(parameter)s)
    WHEN '*|%|?|_' THEN LIKE '%(parameter)s'
    ELSE '*'
END

По сути, я хочу, чтобы запрос менялся в зависимости от того, что вводит пользователь.

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

REGEXP_LIKE возвращает логическое значение (true, false). Это должно быть в предложении where или между когда и тогда. Ниже приведен правильный синтаксис.

SELECT parameter,
CASE      
      WHEN  parameter like '%' then 'Do Something'
      WHEN  parameter like '%Other' then 'Do something else' 
      ELSE 
           '*'
END FROM TABLE1
     WHERE REGEXP_LIKE (parameter, '^.*')
0 голосов
/ 29 апреля 2020

То, что вы делаете, называется предложением WHERE. Он фильтрует данные, а не сам список выбранных столбцов.

Итак: переместите его в WHERE и начните с там (скрытый поэт, а?) .

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