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!