Rumah > pangkalan data > tutorial mysql > Adakah Terdapat Setara LISTAGG dalam Versi Oracle Lama dengan GROUP_CONCAT MySQL?

Adakah Terdapat Setara LISTAGG dalam Versi Oracle Lama dengan GROUP_CONCAT MySQL?

Patricia Arquette
Lepaskan: 2025-01-15 12:19:45
asal
159 orang telah melayarinya

Is There a LISTAGG Equivalent in Older Oracle Versions to MySQL's GROUP_CONCAT?

Adakah terdapat persamaan GROUP_CONCAT untuk MySQL dalam Oracle?

Soalan:

Bagaimana untuk menggabungkan berbilang nilai dalam lajur tertentu ke dalam rentetan dipisahkan koma tunggal dalam Oracle? Data input mengikut format tertentu dan output yang dikehendaki harus mengumpulkan dan menggabungkan nilai untuk setiap kunci unik.

Jawapan:

Untuk Oracle 11g dan ke atas:

Gunakan fungsi LISTAGG:

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

Untuk Oracle 10g dan lebih rendah:

Salah satu cara ialah 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: Versi Oracle sebelum 11g mempunyai sokongan terhad untuk fungsi WM_CONCAT, tetapi penggunaannya ditamatkan kerana kemungkinan isu (lihat dokumentasi Oracle untuk butiran).

Dalam MySQL (untuk rujukan sahaja):

Fungsi GROUP_CONCAT tersedia:

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

Atas ialah kandungan terperinci Adakah Terdapat Setara LISTAGG dalam Versi Oracle Lama dengan GROUP_CONCAT MySQL?. 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