Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencipta Senarai Dibatasi Koma dengan Cekap dalam Pelayan SQL?

Bagaimana untuk Mencipta Senarai Dibatasi Koma dengan Cekap dalam Pelayan SQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-18 10:22:07654semak imbas

How to Efficiently Create Comma-Delimited Lists in SQL Server?

Menjana Senarai Dipisahkan Koma dalam SQL Server

Panduan ini menerangkan cara membuat senarai dipisahkan koma daripada jadual SQL Server. Kaedah memanfaatkan FOR XML PATH dan STUFF untuk penjanaan senarai yang cekap.

Memahami Pendekatan

Teknik teras menggabungkan FOR XML PATH('') untuk mengekstrak data sebagai rentetan (tanpa teg XML) dan STUFF untuk menggantikan ruang dengan koma. Walau bagaimanapun, pendekatan ini mempunyai had.

Pecahan Pertanyaan Asal:

Kaedah asal menggunakan FOR XML PATH('') untuk mendapatkan data sebagai rentetan. Alias ​​data(), walaupun nampaknya elemen XML, ialah penyelesaian yang menghasilkan ralat semasa penjanaan XML, kemudiannya dikendalikan oleh pertanyaan luar. Pengendalian ralat ini kurang ideal.

Pertanyaan Dipertingkat:

Penyelesaian yang lebih mantap dibentangkan di bawah:

<code class="language-sql">SELECT E1.deptno,
       STUFF((SELECT ', ' + E2.ename
               FROM emp AS E2
               WHERE E1.deptno = E2.DEPTNO
               FOR XML PATH('')), 1, 2, '')
FROM EMP AS E1
GROUP BY DEPTNO;</code>

Pertanyaan dipertingkat ini secara langsung menggabungkan nilai dengan koma, menghapuskan penyelesaian XML yang mudah ralat.

Pengendalian XML Terperinci:

Untuk mengelakkan potensi isu dengan aksara XML khas, gunakan .value untuk pengendalian XML yang lebih selamat:

<code class="language-sql">SELECT E1.deptno,
       STUFF((SELECT ', ' + E2.ename
               FROM emp AS E2
               WHERE E1.deptno = E2.DEPTNO
               FOR XML PATH(''), TYPE)
               .value('.', 'NVARCHAR(MAX)'), 1, 2, '')
FROM EMP AS E1
GROUP BY DEPTNO;</code>

Pertanyaan akhir ini menawarkan kaedah yang paling boleh dipercayai untuk menjana senarai dipisahkan koma dalam SQL Server, mengurangkan kemungkinan ralat berkaitan XML. .value('.', 'NVARCHAR(MAX)') secara eksplisit menukar output XML kepada rentetan, memastikan keserasian dan mencegah tingkah laku yang tidak dijangka.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Senarai Dibatasi Koma dengan Cekap dalam Pelayan SQL?. 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