Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Teks dari Berbilang Baris Pelayan SQL ke dalam Rentetan Tunggal?

Bagaimana untuk Menggabungkan Teks dari Berbilang Baris Pelayan SQL ke dalam Rentetan Tunggal?

Mary-Kate Olsen
Lepaskan: 2025-01-25 18:02:10
asal
914 orang telah melayarinya

How to Concatenate Text from Multiple SQL Server Rows into a Single String?

Sambungan Teks Berbilang Baris Pelayan SQL: Kaedah XML PATH

Keperluan untuk menggabungkan berbilang baris data teks ke dalam satu rentetan adalah perkara biasa. Sebagai contoh, terdapat jadual yang mengandungi nama:

<code>Peter
Paul
Mary</code>
Salin selepas log masuk

Matlamatnya adalah untuk menukar ini menjadi rentetan bersatu: "Peter, Paul, Mary".

Untuk pengguna SQL Server 2017 atau Azure, pertimbangkan penyelesaian yang disediakan oleh Mathieu Renda. Walau bagaimanapun, untuk versi terdahulu (seperti SQL 2005), kaedah XML PATH menyediakan kaedah yang cekap untuk tugas sambungan ini.

Berikut ialah contoh jadual yang dipanggil PELAJAR:

SubjectID StudentName
1 Mary
1 John
1 Sam
2 Alaina
2 Edward

Output yang diingini ialah:

SubjectID StudentName
1 Mary, John, Sam
2 Alaina, Edward

Untuk mencapai ini, gunakan kod T-SQL berikut:

<code class="language-sql">SELECT Main.SubjectID,
       LEFT(Main.Students,Len(Main.Students)-1) As "Students"
FROM
    (
        SELECT ST2.SubjectID,
            (
                SELECT ST1.StudentName + ',' AS [text()]
                FROM dbo.Students ST1
                WHERE ST1.SubjectID = ST2.SubjectID
                ORDER BY ST1.SubjectID
                FOR XML PATH (''), TYPE
            ).value('text()[1]','nvarchar(max)') [Students]
        FROM dbo.Students ST2
        GROUP BY ST2.SubjectID
    ) [Main]</code>
Salin selepas log masuk

Pertanyaan ini mendapatkan semula SubjectID dan nilai StudentName yang digabungkan dan menghilangkan koma di belakang daripada rentetan hasil.

Sebagai alternatif, anda boleh menggunakan pendekatan yang lebih bersih dengan menggabungkan koma pada permulaan dan menggunakan STUFF untuk mengalih keluar koma pertama:

<code class="language-sql">SELECT ST2.SubjectID, 
    STUFF(
        (
            SELECT ',' + ST1.StudentName AS [text()]
            FROM dbo.Students ST1
            WHERE ST1.SubjectID = ST2.SubjectID
            ORDER BY ST1.SubjectID
            FOR XML PATH (''), TYPE
        ).value('text()[1]','nvarchar(max)'), 1, 1, '') [Students]
FROM dbo.Students ST2
GROUP BY ST2.SubjectID</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Teks dari Berbilang Baris Pelayan SQL ke dalam Rentetan Tunggal?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan