Oracle SQL: Mengendalikan Gabungan Rentetan Terlalu Panjang dengan XMLAGG
Fungsi LISTAGG Oracle ialah alat yang berguna untuk menggabungkan nilai rentetan ke dalam senarai tunggal yang dipisahkan koma. Walau bagaimanapun, ia dihadkan oleh panjang rentetan maksimum. Apabila hasil gabungan melebihi had ini, ralat "ORA-01489: hasil gabungan rentetan terlalu panjang" berlaku.
Masalah ini timbul apabila cuba menggabungkan data WEB_LINK menggunakan LISTAGG dalam Oracle SQL Developer. Medan WEB_LINK, yang mengandungi gabungan batang URL dan pertanyaan, selalunya menghasilkan rentetan yang melebihi panjang yang dibenarkan.
Penyelesaian? Fungsi XMLAGG. Tidak seperti LISTAGG, XMLAGG mengembalikan CLOB (objek besar berwatak), yang mampu mengendalikan rentetan yang jauh lebih panjang, dengan berkesan mengalih keluar had bilangan baris.
Berikut ialah pertanyaan yang disemak menggunakan XMLAGG:
<code class="language-sql">SELECT RTRIM(XMLAGG(XMLELEMENT(E, colname, ',').EXTRACT('//text()') ORDER BY colname).GetClobVal(), ',') AS LIST FROM tablename;</code>
Pendekatan ini berjaya mengagregat dan menggabungkan data, walaupun dengan rentetan yang sangat panjang, mengembalikan hasilnya sebagai CLOB. Ini memberikan alternatif yang mantap kepada LISTAGG apabila berurusan dengan gabungan rentetan yang berpotensi besar dalam tugas pengagregatan data.
Atas ialah kandungan terperinci Bagaimanakah XMLAGG Boleh Mengatasi Ralat 'ORA-01489: hasil penggabungan rentetan terlalu panjang' Apabila Menggunakan LISTAGG dalam Oracle SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!