Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Senarai Terhad Koma dalam Oracle?

Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Senarai Terhad Koma dalam Oracle?

Barbara Streisand
Barbara Streisandasal
2025-01-19 17:51:10850semak imbas

How to Combine Multiple Rows into a Comma-Delimited List in Oracle?

Mengagregatkan Baris ke dalam Senarai Dibataskan Koma dalam Oracle

Oracle menawarkan beberapa fungsi untuk menyatukan berbilang baris menjadi satu rentetan dengan nilai dipisahkan koma. Ini adalah tugas biasa untuk pengagregatan data dan penjanaan laporan. Fungsi yang paling menonjol ialah WM_CONCAT dan LISTAGG.

Menggunakan WM_CONCAT

Tersedia dalam versi Oracle sebelum 11.2, WM_CONCAT menggabungkan nilai daripada berbilang baris menggunakan pembatas yang ditentukan. Contohnya, untuk menjana senarai nama jadual yang dipisahkan koma dalam skema:

<code class="language-sql">SELECT WM_CONCAT(table_name)
FROM user_tables;</code>

Mempekerjakan LISTAGG

Diperkenalkan dalam Oracle 11.2, LISTAGG menyediakan keupayaan yang dipertingkatkan berbanding WM_CONCAT. Ia membolehkan kawalan yang lebih besar, termasuk menentukan pembatas dan mengendalikan nilai NULL. Contoh berikut mencipta senarai nama jadual yang dipisahkan koma, meninggalkan entri NULL:

<code class="language-sql">SELECT LISTAGG(table_name, ', ') WITHIN GROUP (ORDER BY table_name)
FROM user_tables;</code>

Aplikasi Praktikal

Bayangkan pertanyaan mendapatkan semula beberapa rekod kewarganegaraan untuk setiap individu. Untuk mengelakkan penyertaan berlebihan, LISTAGG boleh digunakan sebagai subkueri untuk menjana satu senarai kewarganegaraan yang dipisahkan koma bagi setiap orang:

<code class="language-sql">SELECT person_id,
       (SELECT LISTAGG(citizenship, ', ') WITHIN GROUP (ORDER BY citizenship)
        FROM citizenship
        WHERE person_id = t.person_id) AS citizenship_list
FROM person t;</code>

Ini mengembalikan satu baris bagi setiap orang, dengan rentetan dipisahkan koma bagi kewarganegaraan mereka dalam lajur citizenship_list.

Ringkasan

WM_CONCAT dan LISTAGG menyediakan cara yang mantap dan serba boleh untuk mengagregatkan berbilang baris ke dalam senarai yang dipisahkan koma dalam Oracle. Fungsi ini menyelaraskan manipulasi data dan meningkatkan kejelasan pertanyaan SQL.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris ke dalam Senarai Terhad Koma dalam Oracle?. 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