Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Senarai Dipisahkan Koma daripada Jadual Pelayan SQL Menggunakan Pertanyaan?
Penjelasan pertanyaan
Pertanyaan ini direka bentuk untuk mencipta senarai dipisahkan koma daripada jadual, ia menggunakan fungsi FOR XML PATH untuk membina serpihan XML yang mengandungi nilai yang diperlukan. Ia menggunakan subquery untuk mendapatkan nama pekerja (ename) untuk jabatan tertentu dan kemudian menggantikan ruang dalam serpihan XML dengan koma.
<code class="language-sql">SELECT E1.deptno, allemp = Replace ((SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')), ' ', ', ') FROM EMP AS e1 GROUP BY DEPTNO; </code>
Cara FOR XML PATH berfungsi
FOR XML PATH('') menjana serpihan XML untuk setiap baris dalam jadual emp berdasarkan lajur yang ditentukan (dalam kes ini, ename). Katakan terdapat jadual pekerja mudah:
<code>EmployeeID Name 1 John Smith 2 Jane Doe</code>
Pertanyaan berikut akan mencipta XML:
<code class="language-sql">SELECT EmployeeID, Name FROM emp.Employee FOR XML PATH ('Employee');</code>
Output:
<code class="language-xml"><employee><employeeid>1</employeeid><name>John Smith</name></employee><employee><employeeid>2</employeeid><name>Jane Doe</name></employee></code>
Ralat pengendalian dan alternatif
Pertanyaan yang diberikan cuba menggunakan data() sebagai teg XML, yang tidak sah dan akan mengakibatkan ralat. Untuk mengelakkan ini, anda boleh menggunakan pertanyaan yang diubah suai berikut:
<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 ini memastikan tiada teg XML dibuat dalam subkueri, dan ia juga mengendalikan nama yang mengandungi ruang dengan menambahkan koma dalam subkueri.
Atas ialah kandungan terperinci Bagaimana untuk Menjana Senarai Dipisahkan Koma daripada Jadual Pelayan SQL Menggunakan Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!