Heim > Datenbank > MySQL-Tutorial > Wie verkette ich Text aus mehreren SQL Server-Zeilen zu einer einzelnen Zeichenfolge?

Wie verkette ich Text aus mehreren SQL Server-Zeilen zu einer einzelnen Zeichenfolge?

Mary-Kate Olsen
Freigeben: 2025-01-25 18:02:10
Original
914 Leute haben es durchsucht

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

SQL Server-Mehrzeilentextverbindung: XML-PATH-Methode

Die Notwendigkeit, mehrere Textzeilen in einer einzigen Zeichenfolge zusammenzufassen, ist häufig. Beispielsweise gibt es eine Tabelle mit Namen:

<code>Peter
Paul
Mary</code>
Nach dem Login kopieren

Ziel ist es, dies in eine einheitliche Zeichenfolge umzuwandeln: „Peter, Paul, Mary“.

Für Benutzer von SQL Server 2017 oder Azure sollten Sie die Lösung von Mathieu Renda in Betracht ziehen. Für frühere Versionen (z. B. SQL 2005) bietet die XML-PATH-Methode jedoch eine effiziente Methode für diese Verbindungsaufgabe.

Das Folgende ist ein Beispiel für eine Tabelle namens STUDENTS:

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

Gewünschte Ausgabe ist:

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

Um dies zu erreichen, verwenden Sie den folgenden T-SQL-Code:

<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>
Nach dem Login kopieren

Diese Abfrage ruft die SubjectID- und verketteten StudentName-Werte ab und lässt das abschließende Komma aus der Ergebniszeichenfolge weg.

Alternativ können Sie einen saubereren Ansatz verwenden, indem Sie die Kommas am Anfang verketten und STUFF verwenden, um das erste Komma zu entfernen:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verkette ich Text aus mehreren SQL Server-Zeilen zu einer einzelnen Zeichenfolge?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage