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
Patricia Arquetteasal
2025-01-15 12:19:45128semak imbas

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>

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>

Cara menggunakan:

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

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>

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!

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