Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Lajur dalam Oracle?

Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Lajur dalam Oracle?

Patricia Arquette
Lepaskan: 2025-01-22 09:36:09
asal
672 orang telah melayarinya

How to Efficiently Split Comma-Separated Values into Columns in Oracle?

Oracle: Menghuraikan Nilai Dipisahkan Koma dengan Cekap ke dalam Lajur

Pemprosesan data selalunya memerlukan pemisahan nilai dipisahkan koma (CSV) kepada lajur individu. Oracle menawarkan penyelesaian yang cekap menggunakan ungkapan biasa, terutamanya berfaedah apabila berurusan dengan sejumlah besar nilai (sehingga 255 dalam kes ini). Ini mengelakkan pengulangan fungsi SUBSTR() yang menyusahkan untuk setiap lajur.

Cabaran: Mengekstrak sehingga 255 nilai dipisahkan koma ke dalam lajur yang berbeza.

Penyelesaian: Memanfaatkan REGEXP_SUBSTR()

Kuncinya ialah fungsi REGEXP_SUBSTR() dan ungkapan biasa berikut:

REGEXP_SUBSTR(CSV_VALUES, '(.*?)(,|$)', 1, COLUMN_NUMBER, NULL, 1)
Salin selepas log masuk

Memahami Regex:

  • (.*?): Memadankan mana-mana aksara (.) sifar atau lebih kali (*), tidak tamak (?). Ini memastikan ia menangkap hanya sehingga koma seterusnya.
  • (,|$): Memadankan sama ada koma (,) atau hujung rentetan ($). Ini mengehadkan nilai.
  • 1: Menentukan bahawa kumpulan pertama yang ditangkap (nilai itu sendiri, tidak termasuk koma) harus dikembalikan.
  • COLUMN_NUMBER: Menunjukkan nilai (lajur) yang hendak diekstrak (1 untuk yang pertama, 2 untuk yang kedua dan seterusnya).
  • NULL, 1: Parameter ini digunakan untuk padanan tidak sensitif huruf besar dan memilih kejadian pertama.

Contoh Ilustrasi:

Pertimbangkan rentetan CSV ini:

<code>CSV_VALUES: 1.25, 3.87, 2, 5, 4, 3.3</code>
Salin selepas log masuk

Untuk mendapatkan nilai pertama (1.25):

REGEXP_SUBSTR(CSV_VALUES, '(.*?)(,|$)', 1, 1, NULL, 1)
Salin selepas log masuk

Untuk nilai kedua (3.87):

REGEXP_SUBSTR(CSV_VALUES, '(.*?)(,|$)', 1, 2, NULL, 1)
Salin selepas log masuk

Dengan melelaran melalui COLUMN_NUMBER, semua nilai diekstrak ke dalam lajur individu. Kaedah ini menskala dengan cekap tanpa mengira bilangan nilai dipisahkan koma dalam rentetan.

Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Nilai Dipisahkan Koma dengan Cekap kepada Lajur dalam Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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