Если ваша тестовая строка имеет ограниченное количество элементов, вы можете разделить ее и проверить, что каждый элемент существует в приложении, используя array_contains ().
Демо:
with your_data as
( --Test dataset, replace it with your table
select stack(5, --5 tuples
'aa\\;bb\\;cc',
'dd\\;cc\\;ff',
'ww\\;xx\\;yy',
'ww\\;aa\\;yy',
'pp\\;bb\\;qq'
) as App
),
test_string as
( --This can be also a dataset, or replace it with string parameter
--according to your requirements
select "'aa','bb','cc'" as str2 --contains values in single quotes delimited by comma
)
select App from
(
select App, split(App, '\\;') AppArray,
split(regexp_replace(t.str2,"'",''),',') as TestArray2 --remove single quotes and split
from your_data
cross join test_string t
--cross join here. This is one string example only. Rewrite join according to your dataset.
)s
where array_contains(AppArray, TestArray2[0]) or --First element exists
array_contains(AppArray, TestArray2[1]) or --second
array_contains(AppArray, TestArray2[2]) --third
;
Результат:
OK
aa;bb;cc
dd;cc;ff
ww;aa;yy
pp;bb;qq
Time taken: 41.853 seconds, Fetched: 4 row(s)