SQL Server-Funktion: Kombinieren mehrerer SQL-Zeilen in einem einzigen durch Trennzeichen getrennten Feld
Das effiziente Zusammenführen mehrerer Zeilen aus einer Unterabfrage in einem einzigen, durch Trennzeichen getrennten Feld innerhalb von SQL Server erfordert einen robusten Ansatz. In diesem Artikel werden zwei effektive Techniken vorgestellt, die für verschiedene SQL Server-Versionen geeignet sind.
FÜR XML-PFAD (SQL Server 2005 und höher):
Diese Methode, kompatibel mit SQL Server 2005 und nachfolgenden Versionen, nutzt den Befehl FOR XML PATH
für die Zeichenfolgenverkettung. Hier ist ein Beispiel:
<code class="language-sql">SELECT [VehicleID], [Name], (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')) AS Locations FROM [Vehicle]</code>
Diese Abfrage verwendet FOR XML PATH
, um für jedes VehicleID
eine durch Kommas getrennte Zeichenfolge von Stadtwerten zu erstellen. Die Funktion STUFF
entfernt das führende Komma.
STRING_AGG (SQL Server 2017 und höher):
Für SQL Server 2017 und höher bietet die Funktion STRING_AGG
eine sauberere und effizientere Lösung:
<code class="language-sql">SELECT [VehicleID], [Name], (SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V</code>
STRING_AGG
verkettet die City
-Werte direkt mit einem angegebenen Trennzeichen (in diesem Fall einem Komma und einem Leerzeichen). Dieser Ansatz wird im Allgemeinen wegen seiner besseren Lesbarkeit und Leistung bevorzugt.
Beide Methoden fassen Daten aus mehreren Zeilen effektiv in einem einzigen durch Trennzeichen versehenen Feld zusammen und vereinfachen so die Datenbearbeitung innerhalb von SQL Server. Wählen Sie die Methode, die am besten zu Ihrer SQL Server-Version passt, um optimale Ergebnisse zu erzielen.
Das obige ist der detaillierte Inhalt vonWie kombiniere ich mehrere SQL-Zeilen in einem einzigen durch Trennzeichen getrennten Feld?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!