Kumpulan Sertai Operasi dalam Oracle
FungsiMySQL 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!