Rumah >pangkalan data >tutorial mysql >Bagaimanakah `FOR XML PATH` dan `STUFF` Bergabung untuk Menggabungkan Data dalam SQL Server?

Bagaimanakah `FOR XML PATH` dan `STUFF` Bergabung untuk Menggabungkan Data dalam SQL Server?

Linda Hamilton
Linda Hamiltonasal
2025-01-22 23:13:18681semak imbas

How Do `FOR XML PATH` and `STUFF` Combine to Concatenate Data in SQL Server?

Sinergi FOR XML PATH dan fungsi STUFF dalam SQL Server

Dalam SQL Server, gabungan fungsi FOR XML PATH dan STUFF memainkan peranan penting dalam menyusun dan menggabungkan data. Mari kita pecahkan mekanismenya untuk mencapai matlamat yang diingini:

1 Gunakan 'UNTUK LALUAN XML' untuk mengekstrak rentetan elemen XML

FOR XML PATH Tukar hasil pertanyaan kepada elemen XML. Dengan meninggalkan nama elemen, ia mengeluarkan senarai nilai yang dipisahkan koma, seperti yang ditunjukkan dalam contoh:

<code class="language-sql">SELECT ',' + name FROM temp1 FOR XML PATH('')</code>

2. Gunakan STUFF untuk mengalih keluar koma di hadapan

STUFF digunakan untuk mengubah suai rentetan dengan menggantikan aksara yang ditentukan. Dalam contoh ini, kami mengalih keluar koma utama dalam rentetan XML:

<code class="language-sql">STUFF((SELECT ',' + NAME FROM temp1 FOR XML PATH('')), 1, 1, '')</code>

3. Lakukan sertai untuk menjana senarai

Akhir sekali, senarai yang diubah suai digabungkan dengan jadual asal melalui lajur 'id':

<code class="language-sql">SELECT ID, abc = STUFF((
             SELECT ',' + name 
              FROM temp1 t1
              WHERE t1.id = t2.id
              FOR XML PATH (''))
             , 1, 1, '') from temp1 t2
group by id;</code>

Gabungan ini menggabungkan nilai lajur 'Nama' dengan berkesan untuk setiap 'Id' , menghasilkan output yang dijangkakan:

<code>Id |    Name
-------------------
1   | aaa,bbb,ccc,ddd,eee</code>

Atas ialah kandungan terperinci Bagaimanakah `FOR XML PATH` dan `STUFF` Bergabung untuk Menggabungkan Data 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