Bom pessoal, vou compartilhar uma função que retorna valores por parte de um texto especifico que estou utilizando, facilitando a utilização de particionamento de texto utilizando um carácter como ponto de particionamento:
CREATE OR REPLACE FUNCTION STRIPART(iTEXT VARCHAR2,
iCARA CHAR,
iINIC INTEGER,
iFINA INTEGER,
iTUDO INTEGER DEFAULT 1) RETURN VARCHAR2 AS
vTEXT VARCHAR2(500) := iTEXT;
vINIC INTEGER := 0;
vFINA INTEGER := 0;
BEGIN
IF iINIC = 0
THEN
-- SE FOR ZERO É INICIO DE STRING SEMPRE
vINIC := 1;
ELSE
-- PEGA A POSIÇÃO DO CARACTER iCARA
vINIC := INSTR(iTEXT, iCARA, 1, iINIC) + 1;
END IF;
IF INSTR(iTEXT, iCARA, 1, iFINA) = 0
THEN
-- SE NAO ENCONTRAR O CARACTER FINAL PEGA TODA A STRING
IF iTUDO = 1
THEN
vFINA := LENGTH(iTEXT);
ELSE
vFINA := 0;
END IF;
ELSE
vFINA := INSTR(iTEXT, iCARA, 1, iFINA) - vINIC;
END IF;
vTEXT := SUBSTR(vTEXT, vINIC, vFINA);
RETURN vTEXT;
END;