Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Berbilang Baris dalam Oracle Tanpa Pendua?

Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Berbilang Baris dalam Oracle Tanpa Pendua?

Barbara Streisand
Barbara Streisandasal
2024-12-31 05:48:13422semak imbas

How to Efficiently Split Comma-Separated Values into Multiple Rows in Oracle Without Duplicates?

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!

Kenyataan:
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