Oleh karena itu, saya ingin memisahkan string dengan pembatas terjauh.
Saya tahu ini adalah pertanyaan lama, tetapi ini adalah persyaratan sederhana yang SUBSTR dan INSTR akan cukup. REGEXP masih lebih lambat dan padat CPU operasi dari fungsi subtsr dan instr lama.
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
Seperti yang Anda katakan, Anda menginginkan yang terjauh pembatas, itu berarti pembatas pertama dari kebalikan .
Pendekatan Anda baik-baik saja, tetapi Anda melewatkan start_position di INSTR . Jika start_position negatif , INSTR
fungsi menghitung mundur start_position jumlah karakter dari akhir string dan kemudian mencari ke awal string.