Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengelakkan Baris Pendua Apabila Memisahkan Nilai Dipisahkan Koma dalam Oracle?

Bagaimana untuk Mengelakkan Baris Pendua Apabila Memisahkan Nilai Dipisahkan Koma dalam Oracle?

Mary-Kate Olsen
Lepaskan: 2025-01-01 05:30:09
asal
542 orang telah melayarinya

How to Avoid Duplicate Rows When Splitting Comma-Separated Values in Oracle?

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
Salin selepas log masuk

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
Salin selepas log masuk

Penjelasan :

  • Fungsi REGEXP_COUNT digunakan untuk menentukan bilangan nilai dipisahkan koma dalam setiap rentetan.
  • Operator PRIOR memastikan baris semasa disambungkan ke baris sebelumnya berdasarkan lajur slno.
  • Fungsi DBMS_RANDOM.VALUE menjana nilai rawak dan digunakan untuk memperkenalkan rawak dalam proses pembahagian, yang membantu menghalang baris pendua daripada dijana.

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan