Вы можете использовать комбинации substr
и inst
как:
with t as
(
select 'red/green/blue' as str from dual
)
select substr(str,1,instr(str,'/',1,1)-1) str1,
substr(str,1,instr(str,'/',1,2)-1) str2,
str as str_whole
from t;
STR1 STR2 STR_WHOLE
---- ---------- --------------
red red/green red/green/blue
Если вы хотите получить построчно, вы можете использовать, добавив regexp_count
со следующим стилем:
with t as
(
select 'red/green/blue' as str from dual
)
select decode(sign(instr(str,'/',1,level)),1,substr(str,1,instr(str,'/',1,level)-1),str)
as str
from t
connect by level <= regexp_count(str,'/') + 1;
STR
--------------
red
red/green
red/green/blue
Rextester Demo