Penggabungan Rentetan Pelayan SQL: Menguasai UNTUK LALUAN XML dan STUFF
SQL Server menyediakan keupayaan manipulasi rentetan yang mantap, terutamanya dengan fungsi FOR XML PATH
dan STUFF
. Fungsi ini tidak ternilai untuk menggabungkan data daripada berbilang baris ke dalam satu rentetan.
Menyahbina FOR XML PATH
Fungsi FOR XML PATH
menukar hasil pertanyaan kepada format XML. Dengan menentukan laluan, anda mengawal struktur XML. Contohnya, untuk membuat senarai nama yang dipisahkan koma:
<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>
Ini menjana rentetan XML dengan koma di hadapan.
Menggunakan Fungsi STUFF
Fungsi STUFF
mengubah suai rentetan dengan menggantikan aksara. Ia memerlukan empat argumen: rentetan asal, kedudukan permulaan, bilangan aksara untuk dialih keluar dan rentetan gantian.
Untuk mengalih keluar koma awal daripada output XML di atas:
<code class="language-sql">STUFF((SELECT ',' + name FROM temp1 FOR XML PATH('')), 1, 1, '')</code>
Ini membersihkan rentetan dengan cekap, meninggalkan senarai nama yang dipisahkan koma.
Penggunaan Sinergis FOR XML PATH
dan STUFF
Menggabungkan fungsi ini membolehkan penggabungan set rekod yang berkuasa. Pertimbangkan pertanyaan SQL ini:
<code class="language-sql">SELECT ID, abc = STUFF( (SELECT ',' + name FROM temp1 WHERE t1.id = t2.id FOR XML PATH ('')) , 1, 1, '') FROM temp1 t2 GROUP BY id</code>
Pertanyaan ini melakukan langkah berikut:
FOR XML PATH
Subquery: Pertanyaan bersarang ini mendapatkan semula nama yang dikaitkan dengan setiap ID, menyertai temp1
(disebut sebagai t1
) dengan jadual pertanyaan luar (disebut sebagai t2
). FOR XML PATH('')
menggabungkan nama-nama ini menjadi satu elemen XML.STUFF
Fungsi: Pertanyaan luar menggunakan STUFF
untuk mengalih keluar koma utama daripada rentetan XML yang dijana oleh subkueri.GROUP BY
Fasal: GROUP BY id
memastikan bahawa hasil akhir hanya mengandungi ID unik, setiap satunya dengan nama digabungkan yang sepadan.Kesimpulan
Kuasa gabungan FOR XML PATH
dan STUFF
menawarkan pendekatan yang diperkemas untuk penggabungan rentetan dalam SQL Server. Teknik ini memudahkan penciptaan rentetan berformat, menggabungkan teks daripada berbilang baris dan membina pengagregatan tersuai.
Atas ialah kandungan terperinci Bagaimanakah FOR XML PATH dan Fungsi STUFF Bekerja Bersama untuk Penggabungan Rentetan dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!