Proto bych rád oddělil řetězec nejvzdálenějším oddělovačem.
Vím, že je to stará otázka, ale toto je jednoduchý požadavek, pro který SUBSTR a INSTR by stačilo. REGEXP jsou stále pomalejší a náročné na CPU operace než staré funkce subtsr a 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
Jak jste řekl, chcete to nejdále oddělovač, znamenalo by to první oddělovač od obráceného .
Váš přístup byl v pořádku, ale chyběla vám start_position v INSTR . Pokud je počáteční_pozice záporná , INSTR
funkce zpětně počítá start_position počet znaků od konce řetězce a poté hledá směrem k začátku řetězce.