Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencapai Fungsi GROUP_CONCAT dalam Oracle?

Bagaimana untuk Mencapai Fungsi GROUP_CONCAT dalam Oracle?

Barbara Streisand
Barbara Streisandasal
2025-01-15 12:28:44428semak imbas

How to Achieve GROUP_CONCAT Functionality in Oracle?

Kumpulan Sertai Operasi dalam Oracle

Fungsi

MySQL GROUP_CONCAT boleh menggabungkan nilai terkumpul berbilang baris ke dalam rentetan. Tiada fungsi setara yang tepat dalam Oracle, tetapi terdapat beberapa cara untuk mencapai fungsi yang serupa.

Oracle 11g dan lebih tinggi menggunakan LISTAGG

Oracle 11g memperkenalkan fungsi LISTAGG, yang mengagregatkan nilai ke dalam rentetan yang dipisahkan koma:

<code class="language-sql">SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names
FROM table_x
GROUP BY col1</code>

Oracle 10g dan versi yang lebih rendah menggunakan fungsi tersuai

Untuk Oracle 10g dan lebih rendah, anda boleh mencipta fungsi tersuai:

<code class="language-sql">CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val IN NUMBER)
  RETURN VARCHAR2
IS
  return_text VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/</code>

Cara menggunakan:

<code class="language-sql">SELECT col1, get_comma_separated_value(col1) FROM table_name</code>

Nota: Terdapat fungsi (tidak disokong) WM_CONCAT tersedia dalam beberapa versi Oracle lama.

Kaedah alternatif dalam MySQL (untuk perbandingan)

Dalam MySQL anda boleh menggunakan fungsi GROUP_CONCAT:

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1</code>

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi GROUP_CONCAT 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