Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Berbilang Baris dalam Oracle Tanpa Pendua?
Oracle: Bahagikan Nilai Dipisahkan Koma dengan Cekap kepada Berbilang Baris
Dalam pertanyaan Oracle, apabila membahagikan data yang dipisahkan koma kepada berbilang baris menggunakan CONNECT OLEH dan ungkapan biasa, baris pendua boleh timbul. Untuk mengatasi isu ini, pertimbangkan strategi berikut:
Menggunakan REGEXP_COUNT() untuk Pemisahan Tepat
Pertanyaan yang diubah suai memperkenalkan REGEXP_COUNT() untuk menentukan bilangan yang dipisahkan koma nilai dalam setiap baris:
WITH CTE AS ( SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g' temp, 2 slno FROM DUAL UNION SELECT 'h' temp, 3 slno FROM DUAL ) SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno FROM CTE CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+') AND PRIOR slno = slno AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
Memanfaatkan Sambungan mengikut Tahap dan DBMS_RANDOM.VALUE Sebelumnya
Pertanyaan dipertingkat ini menggunakan CONNECT BY LEVEL bersama-sama dengan PRIOR DBMS_RANDOM.VALUE untuk menghapuskan pendua:
WITH CTE AS ( SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g' temp, 2 slno FROM DUAL UNION SELECT 'h' temp, 3 slno FROM DUAL ) SELECT TRIM(REGEXP_SUBSTR(temp, '[^,]+', 1, level)), slno FROM CTE CONNECT BY level <= REGEXP_COUNT(temp, '[^,]+') AND PRIOR slno = slno
Dengan menggunakan ini pertanyaan yang diubah suai, anda boleh membahagikan nilai yang dipisahkan koma dengan berkesan kepada berbilang baris sambil memastikan baris pendua dihapuskan.
Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Berbilang Baris dalam Oracle Tanpa Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!