Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membuat Senarai Nama Pekerja yang Dibataskan Koma dalam SQL Server?
Pertanyaan untuk mencipta senarai dipisahkan koma dalam SQL Server
Pertanyaan yang anda berikan direka bentuk untuk membuat senarai nama pekerja yang dipisahkan koma daripada jadual. Walau bagaimanapun, kerumitan pertanyaan mungkin mengelirukan anda. Mari kita pecahkan langkah demi langkah.
Langkah 1: Gabungkan subkueri nama pekerja
Subkueri:
<code class="language-sql">SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')</code>
Kembalikan nama pekerja yang disambungkan sebagai XML. Alias "data()" digunakan untuk memaksa ralat, yang kemudiannya disembunyikan oleh klausa FOR XML PATH(''). Ini akan menghasilkan XML tanpa sebarang teg.
Langkah 2: Alih keluar ruang
FungsiReplace() digunakan untuk menggantikan ruang dalam rentetan XML dengan koma:
<code class="language-sql">allemp = Replace ((SELECT E2.ename AS 'data()' FROM emp AS e2 WHERE e1.deptno = e2.DEPTNO FOR xml PATH('')), ' ', ', ') </code>
Langkah 3: Pengumpulan dan Output
Gunakan GROUP BY DEPTNO untuk mengumpulkan pertanyaan mengikut nombor jabatan. Kemudian, paparkan output sebagai senarai nama pekerja yang dipisahkan koma untuk setiap jabatan.
Pertanyaan alternatif
Pertanyaan berikut juga boleh digunakan untuk mencapai hasil yang sama, dengan beberapa penambahbaikan:
<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 menggunakan fungsi STUFF() untuk mengalih keluar koma dan ruang pertama. Ia juga meninggalkan alias dalam subquery untuk mengelakkan membuat teg XML.
Atas ialah kandungan terperinci Bagaimana untuk Membuat Senarai Nama Pekerja yang Dibataskan Koma dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!