Вам нужно повторно атомизировать строку master
.К счастью, вам не нужно трогать записи record
.
В этом решении используется регулярное выражение для разбиения основной строки на токены.Они связаны между собой токенами.Мы используем instr()
, чтобы увидеть, существует ли токен в строке записи, и результат агрегируется для получения одной записи с флагом Y / N на record
.
with m as (
select regexp_substr(str,'[^,]+', 1, level) as tkn
from master_t
connect by level <= regexp_count(str, ',')+1
)
select r.str
, max(case when instr(r.str, m.tkn) > 0 then 'Y' else 'N' end) as in_str
from m
cross join record_t r
group by r.str
/
Очевидно, что это решение предполагает, что вы имеете дело с таблицами.Вопрос немного расплывчат относительно ваших структур данных.Я надеюсь, что вы сможете применить этот ответ к вашей ситуации, но если вам нужна дополнительная помощь, пожалуйста, отредактируйте свой вопрос , чтобы дать разъяснения.