Rumah >pangkalan data >tutorial mysql >Bagaimanakah FOR XML PATH dan Fungsi STUFF Bekerja Bersama untuk Penggabungan Rentetan dalam SQL Server?

Bagaimanakah FOR XML PATH dan Fungsi STUFF Bekerja Bersama untuk Penggabungan Rentetan dalam SQL Server?

DDD
DDDasal
2025-01-22 23:02:15454semak imbas

How Do FOR XML PATH and STUFF Functions Work Together for String Concatenation in SQL Server?

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:

  1. 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.
  2. STUFF Fungsi: Pertanyaan luar menggunakan STUFF untuk mengalih keluar koma utama daripada rentetan XML yang dijana oleh subkueri.
  3. 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!

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