запрос в oracle, чтобы найти несколько строковых шаблонов (содержит 5-50 символов) в строке в oracle - PullRequest
1 голос
/ 16 апреля 2020

У меня есть почти 50 различных шаблонов строк, которые мне нужны, чтобы просмотреть строку и отфильтровать строку, содержащую любой из этих 50 шаблонов строк. Как я могу написать запрос, чтобы найти только те строки, которые содержат любую из этих 50 строчек.

 SELECT  STRING_1 FROM TABLE_1 WHERE REGEXP_LIKE (UPPER(STRING_1),'((DBA)|ABC:|CDE,|QRT/)') 

1 Ответ

1 голос
/ 16 апреля 2020
SQL> 
with p (str) as  (
  select 'DBA' from dual union all 
  select 'ABC:' from dual union all 
  select 'CDE,' from dual union all 
  select 'QRT/' from dual union all
  select 'zzz:' from dual
)
, t (str) as (
  select 'test ABCDBAABC) ' from dual union all
  select 'AbC: xyz' from dual union all
  select 'MBC ' from dual union all
  select 'ABC ' from dual union all
  select 'ABC: and CDE, ' from dual union all
  select 'ZZZ:' from dual
)
select * from t join p
on ( upper(t.str) like '%' || upper(p.str) ||'%');

STR              STR 
---------------- ----
test ABCDBAABC)  DBA 
AbC: xyz         ABC:
ABC: and CDE,    ABC:
ABC: and CDE,    CDE,
ZZZ:             zzz:


SQL> 
with p (str) as  (
  select 'DBA' from dual union all 
  select 'ABC:' from dual union all 
  select 'CDE,' from dual union all 
  select 'QRT/' from dual union all
  select 'zzz:' from dual
)
, t (str) as (
  select 'test ABCDBAABC) ' from dual union all
  select 'AbC: xyz' from dual union all
  select 'MBC ' from dual union all
  select 'ABC ' from dual union all
  select 'ABC: and CDE, ' from dual union all
  select 'ZZZ:' from dual
)
select * from t join p
on (regexp_like(t.str, p.str, 'i'));

STR              STR 
---------------- ----
test ABCDBAABC)  DBA 
AbC: xyz         ABC:
ABC: and CDE,    ABC:
ABC: and CDE,    CDE,
ZZZ:             zzz:

храните ваши шаблоны в таблице. Присоединитесь к этому со своей таблицей, как показано. Если в значении, которое необходимо проверить, может быть несколько шаблонов, то он будет возвращен столько раз, сколько шаблонов возникнет.

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