Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memisahkan Rentetan dalam Oracle SQL dengan Pembatas Terjauh?
Pisah Rentetan mengikut Kedudukan Pembatas Menggunakan Oracle SQL
Dalam persekitaran pangkalan data, bekerja dengan data rentetan adalah penting. Keupayaan untuk memisahkan rentetan dengan pembatas pada kedudukan tertentu selalunya diperlukan untuk manipulasi dan analisis data. Soalan ini menunjukkan cara untuk mengatasi cabaran membelah rentetan dalam Oracle SQL dengan menentukan pembatas paling jauh.
Contoh yang diberikan dalam soalan melibatkan pemisahan rentetan "F/P/O" kepada komponennya dan hasil yang diingini ialah "F/P" dan "O." Masalah timbul apabila rentetan tidak konsisten mengikut corak pembatas yang sama, kerana kod SQL yang disediakan menghasilkan hasil yang tidak dijangka untuk rentetan dengan hanya satu pembatas.
Untuk menyelesaikan isu ini, kod SQL yang disediakan perlu diubah suai sedikit . Kuncinya ialah mengenal pasti pembatas paling jauh dari hujung rentetan. Ini boleh dicapai dengan menggunakan fungsi INSTR, yang mengambil kedudukan permulaan negatif.
Di bawah ialah kod SQL yang disemak semula yang berjaya memisahkan rentetan dengan pembatas paling jauh:
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
Dalam ini kod yang lebih baik, fungsi INSTR dipanggil dengan kedudukan permulaan negatif -1 dan corak carian '/'. Ini memastikan bahawa fungsi mula mencari dari hujung rentetan, mengenal pasti pembatas paling jauh. Pemisahan yang terhasil adalah tepat untuk kedua-dua rentetan dengan berbilang pembatas dan dengan hanya satu pembatas, seperti yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dalam Oracle SQL dengan Pembatas Terjauh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!