Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memisahkan Rentetan dalam Oracle SQL pada Kejadian Terjauh Pembatas?

Bagaimanakah Saya Boleh Memisahkan Rentetan dalam Oracle SQL pada Kejadian Terjauh Pembatas?

Barbara Streisand
Barbara Streisandasal
2025-01-05 10:51:38805semak imbas

How Can I Split a String in Oracle SQL at the Furthest Occurrence of a Delimiter?

Memisahkan Rentetan mengikut Kedudukan Pembatas Menggunakan Oracle SQL

Sama seperti siaran lain, keperluannya adalah untuk memisahkan rentetan dengan kejadian terjauh sesuatu pembatas. Perbezaan utama di sini ialah pembatas bukan selalunya yang pertama, tetapi yang paling jauh.

Untuk mencapai ini, fungsi SUBSTR dan INSTR boleh digunakan. Instr(str, '/', -1, 1) mencari kedudukan pembatas paling jauh, manakala -1 menunjukkan untuk mula mencari dari hujung rentetan ke arah permulaan.

Walau bagaimanapun, ralat berlaku dalam contoh yang disediakan kerana ketiadaan start_position dalam fungsi INSTR. Dengan menambah start_position = -1, fungsi INSTR berjaya mencari pembatas paling jauh dan membelah rentetan dengan sewajarnya.

Berikut ialah kod yang diubah suai:

WITH DATA AS
  ( SELECT 'F/P/O' str FROM dual
  )
SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
FROM DATA

Pindaan ini memastikan kod terbahagi dengan tepat rentetan pada kedudukan pembatas yang dikehendaki, menghasilkan output "F/P" dan "O" yang betul untuk rentetan yang diberikan "F/P/O".

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memisahkan Rentetan dalam Oracle SQL pada Kejadian Terjauh Pembatas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn