Heim > Datenbank > MySQL-Tutorial > Wie kann ich in SQL Server mehrere Unterabfragezeilen zu einem einzigen durch Trennzeichen getrennten Feld verketten?

Wie kann ich in SQL Server mehrere Unterabfragezeilen zu einem einzigen durch Trennzeichen getrennten Feld verketten?

Mary-Kate Olsen
Freigeben: 2025-01-22 00:22:11
Original
571 Leute haben es durchsucht

How Can I Concatenate Multiple Subquery Rows into a Single Delimited Field in SQL Server?

Effizientes Kombinieren von Unterabfrageergebnissen in einem einzigen getrennten Feld in SQL Server

SQL Server bietet mehrere Methoden zum Verketten mehrerer Zeilen aus einer Unterabfrage in einem einzelnen Feld mit einem Trennzeichen. Obwohl serverseitige Cursor eine Option sind, sind sie oft weniger effizient. In diesem Artikel werden effektivere Techniken untersucht.

FÜR XML PATH: Eine Lösung für ältere SQL Server-Versionen (2005 und niedriger)

Für SQL Server 2005 und frühere Versionen bietet der Befehl FOR XML PATH eine übersichtliche Lösung:

SELECT [VehicleID]
     , [Name]
     , (STUFF((SELECT CAST(', ' + [City] AS VARCHAR(MAX)) 
         FROM [Location] 
         WHERE (VehicleID = Vehicle.VehicleID) 
         FOR XML PATH ('')), 1, 2, '')) AS Locations
FROM [Vehicle]
Nach dem Login kopieren

Dies nutzt geschickt die XML-Pfadgenerierung, um City Werte zu verketten, und STUFF entfernt dann das anfängliche Komma.

STRING_AGG: Die bevorzugte Methode für SQL Server 2017 und höher

SQL Server 2017 und spätere Versionen führen STRING_AGG ein, eine deutlich verbesserte Funktion:

SELECT  [VehicleID]
       ,[Name]
       ,(SELECT STRING_AGG([City], ', ')
         FROM [Location]
         WHERE VehicleID = V.VehicleID) AS Locations
FROM   [Vehicle] V
Nach dem Login kopieren

STRING_AGG bietet eine bessere Leistung und ermöglicht benutzerdefinierte Trennzeichen, was es zum empfohlenen Ansatz für moderne SQL Server-Bereitstellungen macht.

Zusammenfassung

Diese Methoden bieten effiziente Möglichkeiten, mehrere Unterabfragezeilen in einer einzigen durch Trennzeichen getrennten Zeichenfolge in SQL Server zu konsolidieren und so Datenmanipulationsaufgaben zu rationalisieren. Die Wahl der geeigneten Methode hängt von Ihrer SQL Server-Version ab; STRING_AGG ist aufgrund seiner verbesserten Leistung und Flexibilität die bevorzugte Wahl für neuere Versionen.

Das obige ist der detaillierte Inhalt vonWie kann ich in SQL Server mehrere Unterabfragezeilen zu einem einzigen durch Trennzeichen getrennten Feld verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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