Do đó, tôi muốn phân tách chuỗi bằng dấu phân cách xa nhất.
Tôi biết đây là một câu hỏi cũ, nhưng đây là một yêu cầu đơn giản đối với SUBSTR và INSTR sẽ đủ. REGEXP vẫn chậm hơn và chuyên sâu về CPU hoạt động hơn các hàm subtsr và hướng dẫn cũ.
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
Như bạn đã nói, bạn muốn xa nhất dấu phân cách, nó có nghĩa là dấu phân cách đầu tiên từ đảo ngược .
Cách tiếp cận của bạn ổn, nhưng bạn thiếu start_position trong INSTR . Nếu start_position là phủ định , INSTR
hàm đếm lại start_position số ký tự từ cuối chuỗi và sau đó tìm kiếm ở đầu chuỗi.