Memisahkan Berbilang Nilai Dipisahkan Koma menjadi Berbilang Baris Jadual Oracle tanpa Pendua
Apabila memisahkan data yang dipisahkan koma kepada berbilang baris menggunakan Oracle's CONNECT BY dan ungkapan biasa, adalah mungkin untuk menemui baris pendua. Di bawah ialah pertanyaan asal yang menjana hasil pendua:
WITH CTE AS ( SELECT 'a,b,c,d,e' temp, 1 slno FROM DUAL UNION SELECT 'f,g', 2 from dual UNION SELECT 'h', 3 FROM DUAL ) SELECT TRIM(REGEXP_SUBSTR(TEMP, '[^,]+', 1, LEVEL)), SLNO FROM CTE CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1
Untuk menyelesaikan isu baris pendua, pengubahsuaian berikut telah dibuat pada pertanyaan:
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
Penjelasan :
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Baris Pendua Apabila Memisahkan Nilai Dipisahkan Koma dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!