Я думаю, вы просто пытаетесь разделить строку с разделителями на несколько значений; с вашей строкой в CTE:
with pipe (SH_CHGDESC) as (
select 'FRTRV-11;SFARV-13;SCRRV-12' from dual
)
select regexp_substr(sh_chgdesc, '(.*?)(;|$)', 1, level, null, 1)
from pipe
connect by level < regexp_count(sh_chgdesc, '(.*?)(;|$)');
REGEXP_SUBSTR(SH_CHGDESC,'
--------------------------
FRTRV-11
SFARV-13
SCRRV-12
Если вы получаете строку из таблицы и работаете с несколькими строками одновременно, это немного сложнее, но может быть обработано, если в таблице pipe
есть первичный / уникальный ключ.