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:
храните ваши шаблоны в таблице. Присоединитесь к этому со своей таблицей, как показано. Если в значении, которое необходимо проверить, может быть несколько шаблонов, то он будет возвращен столько раз, сколько шаблонов возникнет.