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>
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>
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>
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!