Derfor vil jeg gerne adskille strengen med den længste afgrænsning.
Jeg ved, at dette er et gammelt spørgsmål, men dette er et simpelt krav, som SUBSTR for og INSTR ville være tilstrækkeligt. REGEXP er stadig langsommere og CPU-intensive operationer end de gamle subtsr og instr funktioner.
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
Som du sagde, vil du have det længst skilletegn, ville det betyde den første afgrænsning fra omvendt .
Din tilgang var fin, men du manglede startpositionen i INSTR . Hvis start_positionen er negativ , INSTR
funktionen tæller start_position antallet af tegn tilbage fra slutningen af strengen og søger derefter mod begyndelsen af strengen.