Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Oracle Tanpa Menjana Baris Pendua?
Memisahkan Berbilang Nilai Dipisahkan Koma dalam Jadual Oracle kepada Baris Unik
Dalam oracle, pemisahan nilai yang dipisahkan koma kepada berbilang baris biasanya dilakukan menggunakan ungkapan biasa dan klausa CONNECT BY. Walau bagaimanapun, satu cabaran yang sering dihadapi ialah penjanaan baris pendua. Ini boleh menjadi masalah terutamanya dalam jadual dengan berbilang baris di mana setiap baris mengandungi rentetan dipisahkan koma.
Untuk menangani isu ini, pertanyaan yang diubah suai boleh digunakan untuk memisahkan nilai sambil menghapuskan baris pendua dengan berkesan:
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
Pertanyaan ini memperkenalkan dua kunci pengubahsuaian:
Akibatnya, pertanyaan ini memisahkan dipisahkan koma dengan berkesan nilai ke dalam berbilang baris sambil mengekalkan pengenalan baris yang unik dan menghalang baris pendua daripada dijana.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Nilai Dipisahkan Koma dengan Cekap dalam Oracle Tanpa Menjana Baris Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!