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

Bagaimana untuk Mencapai Fungsi GROUP_CONCAT MySQL dalam Oracle?

Susan Sarandon
Lepaskan: 2025-01-15 12:32:44
asal
367 orang telah melayarinya

How to Achieve MySQL's GROUP_CONCAT Functionality in Oracle?

Kumpulan SQL Menyertai Oracle: Setara dengan GROUP_CONCAT MySQL

Dalam MySQL, fungsi GROUP_CONCAT digunakan secara meluas untuk menggabungkan nilai yang dikumpulkan mengikut lajur tertentu. Oracle menyediakan fungsi serupa melalui alternatif:

Fungsi LISTAGG (11g ke atas)

<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

Output:

col1 names
1 a, b
2 c, d, e

Fungsi tersuai (10g dan lebih rendah)

<code class="language-sql">CREATE OR REPLACE FUNCTION get_comma_separated_value(input_val 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

Pertanyaan menggunakan fungsi ini:

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

Nota: Gunakan fungsi ini dengan berhati-hati kerana ia mungkin menghadapi masalah ingatan semasa mengendalikan set data yang besar.

Fungsi WM_CONCAT (tidak disokong)

Sesetengah versi lama Oracle menyediakan fungsi yang tidak disokong dipanggil WM_CONCAT. Walau bagaimanapun, adalah disyorkan untuk menggunakan LISTAGG atau fungsi tersuai untuk versi Oracle moden.

MySQL GROUP_CONCAT yang setara

Untuk kesempurnaan, pertanyaan MySQL GROUP_CONCAT disediakan di bawah:

<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 MySQL 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