Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Senarai Dipisahkan Koma daripada Jadual Pelayan SQL Menggunakan Pertanyaan?

Bagaimana untuk Menjana Senarai Dipisahkan Koma daripada Jadual Pelayan SQL Menggunakan Pertanyaan?

DDD
Lepaskan: 2025-01-18 10:07:41
asal
628 orang telah melayarinya

How to Generate Comma-Separated Lists from SQL Server Tables Using Queries?

SQL Server: Gunakan pertanyaan untuk menjana senarai dipisahkan koma

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Pertanyaan berikut akan mencipta XML:

<code class="language-sql">SELECT  EmployeeID, Name
FROM    emp.Employee
FOR XML PATH ('Employee');</code>
Salin selepas log masuk

Output:

<code class="language-xml"><employee><employeeid>1</employeeid><name>John Smith</name></employee><employee><employeeid>2</employeeid><name>Jane Doe</name></employee></code>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan