Por lo tanto, me gustaría separar la cadena por el delimitador más lejano.
Sé que esta es una vieja pregunta, pero este es un requisito simple para el cual SUBSTR y INSTR bastaría. REGEXP siguen siendo más lentos y uso intensivo de CPU operaciones que las antiguas funciones subtsr e instr.
SQL> WITH DATA AS
2 ( SELECT 'F/P/O' str FROM dual
3 )
4 SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
5 SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
6 FROM DATA
7 /
PART1 PART2
----- -----
F/P O
Como dijiste, quieres lo más lejano delimitador, significaría el primer delimitador del reverso .
Tu enfoque estuvo bien, pero te faltaba la posición_inicial en INSTR . Si start_position es negativo , el INSTR
La función cuenta hacia atrás el número de caracteres de la posición inicial desde el final de la cadena y luego busca hacia el comienzo de la cadena.