Oracle SQL фильтрация результатов запроса - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь написать запрос для фильтрации результатов из двух столбцов параметризованного запроса.

CASE WHEN REGEXP_INSTR('%param1)s', '[|(\\\[]') > 0 AND REGEXP_LIKE(column1.'%param1)s') 
THEN 'Y' END REGEXP_MATCH,
CASE WHEN REGEXP_INSTR('%param1)s', '[|(\\\[]') = 0 AND column1 LIKE '%(param1)s' 
THEN 'Y' END LIKE_MATCH,

Это создает два столбца, REGEXP_MATCH и LIKE_MATCH.

Затем я хочу отфильтровать оба столбца. Если REGEXP_MATCH равен Y, используйте регулярное выражение для param1. Если LIKE_MATCH равен 'Y', тогда используйте оператор LIKE для param1, в противном случае используйте '*' и сопоставьте все.

Я не совсем уверен, что лучший способ сделать это, хотя.

1 Ответ

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

Это то, что вы хотите?

WHERE ( REGEXP_INSTR('%param1)s', '[|(\\\[]') > 0 AND REGEXP_LIKE(column1.'%param1)s') 
      ) OR
      (REGEXP_INSTR('%param1)s', '[|(\\\[]') = 0 AND column1 LIKE '%(param1)s'
      ) OR
      (%param1 IS NULL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...