Daarom wil ik de string scheiden door het verste scheidingsteken.
Ik weet dat dit een oude vraag is, maar dit is een eenvoudige vereiste waarvoor SUBSTR en INSTR zou volstaan. REGEXP zijn nog steeds langzamer en CPU-intensief bewerkingen dan de oude functies subtsr en 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
Zoals je zei, wil je de verste scheidingsteken, zou dit het eerste scheidingsteken van het omgekeerde . betekenen .
Je nadering was prima, maar je miste de start_position in INSTR . Als de startpositie negatief . is , de INSTR
functie telt start_positie aantal tekens terug vanaf het einde van de tekenreeks en zoekt vervolgens naar het begin van de tekenreeks.