By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
with temp as
(
select 108 Name, 'test' Project, 'string-1 , string-2 ; string-3' Error from dual
union all
select 109, 'test2', 'single string' from dual
)
select distinct
t.name, t.project,
trim(regexp_substr(t.error, '[^,;]+', 1, levels.column_value)) as error
from
temp t,
table(cast(multiset(select level from dual connect by level <= length (regexp_replace(t.error, '[^,;]+')) + 1) as sys.OdciNumberList)) levels
order by name;
NAME | PROJECT | ERROR |
---|---|---|
108 | test | string-1 |
108 | test | string-2 |
108 | test | string-3 |
109 | test2 | single string |