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

Bagaimana untuk Mencapai Fungsi GROUP_CONCAT dalam Oracle?

Barbara Streisand
Lepaskan: 2025-01-15 12:28:44
asal
378 orang telah melayarinya

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

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

Cara menggunakan:

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

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

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!

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