Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memisahkan Rentetan dalam Oracle SQL Berdasarkan Kejadian Terjauh Pembatas?

Bagaimana untuk Memisahkan Rentetan dalam Oracle SQL Berdasarkan Kejadian Terjauh Pembatas?

Susan Sarandon
Lepaskan: 2025-01-05 18:10:39
asal
999 orang telah melayarinya

How to Split a String in Oracle SQL Based on the Furthest Occurrence of a Delimiter?

Memisahkan String mengikut Kedudukan Pembatas menggunakan Oracle SQL

Tugas biasa apabila bekerja dengan rentetan adalah untuk membahagikannya kepada segmen yang lebih kecil berdasarkan pembatas tertentu. Walau bagaimanapun, apabila kedudukan pembatas berbeza dalam rentetan, pemisahan menjadi lebih kompleks.

Pernyataan Masalah

Andaikan anda mempunyai rentetan seperti "F/P/O" dan mahu membelahnya dengan kejadian paling jauh dari pembatas "/". Hasil yang diingini adalah untuk memisahkan rentetan kepada dua bahagian: "F/P" dan "O."

Percubaan Awal

Pernyataan SQL berikut cuba memisahkan rentetan menggunakan fungsi SUBSTR dan INSTR:

SELECT Substr('F/P/O', 1, Instr('F/P/O', '/') - 1) part1, 
       Substr('F/P/O', Instr('F/P/O', '/') + 1)    part2 
FROM   dual
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini menghasilkan hasil yang tidak dijangka, membelah rentetan ke dalam "F" dan "/P/O."

Resolusi

Isunya terletak pada penggunaan fungsi INSTR. Secara lalai, INSTR mencari kejadian pertama bagi pembatas, bukan yang paling jauh. Untuk mencari pembatas paling jauh, fungsi INSTR hendaklah diubah suai untuk mencari dari hujung rentetan:

SELECT SUBSTR(str, 1, Instr(str, '/', -1, 1) -1) part1,
         SUBSTR(str, Instr(str, '/', -1, 1) +1) part2
FROM DATA
Salin selepas log masuk

Dengan memulakan carian dari hujung (ditandakan oleh start_position negatif -1), fungsi INSTR mengesan kejadian terakhir pembatas dan membahagi rentetan mengikut kesesuaian kepada "F/P" dan "O." Pendekatan ini memastikan bahawa walaupun terdapat berbilang pembatas dalam rentetan, perpecahan berlaku pada kedudukan paling jauh.

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan