Heim >Datenbank >MySQL-Tutorial >Wie können Zeichenfolgen aus mehreren Zeilen in SQL Server ohne CLR-Funktionen effizient verkettet werden?
Hochleistungsfähige Zeichenfolgenverkettung in SQL Server: Umgehen von CLR-Einschränkungen
Das Zusammenfassen von Zeichenfolgen aus mehreren Zeilen zu einer einzigen Zeichenfolge ist eine häufige SQL Server-Aufgabe. Obwohl es Methoden wie COALESCE
und FOR XML PATH
gibt, sind sie hinsichtlich der Effizienz oft unzureichend. Dies gilt insbesondere für SQL Azure, das keine Unterstützung für CLR-Funktionen bietet, wodurch eine übliche Hochleistungslösung entfällt.
Effektive Alternativen: Rekursiver CTE-Ansatz
Eine robuste und effiziente Alternative nutzt einen rekursiven Common Table Expression (CTE). Diese Technik umfasst die folgenden Schlüsselschritte:
Diese Methode garantiert konsistente Ergebnisse durch explizite Gruppierung und Sortierung.
Praktische Umsetzung:
Hier ist eine Beispielimplementierung mit einem rekursiven CTE:
<code class="language-sql">WITH Partitioned AS ( SELECT ID, Name, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) AS NameNumber, COUNT(*) OVER (PARTITION BY ID) AS NameCount FROM dbo.SourceTable ), Concatenated AS ( SELECT ID, CAST(Name AS nvarchar(max)) AS FullName, Name, NameNumber, NameCount FROM Partitioned WHERE NameNumber = 1 UNION ALL SELECT P.ID, CAST(C.FullName + ', ' + P.Name AS nvarchar(max)), P.Name, P.NameNumber, P.NameCount FROM Partitioned AS P INNER JOIN Concatenated AS C ON P.ID = C.ID AND P.NameNumber = C.NameNumber + 1 ) SELECT ID, FullName FROM Concatenated WHERE NameNumber = NameCount;</code>
Dieser rekursive CTE bietet eine skalierbare und effiziente Lösung für die Zeichenfolgenverkettung in SQL Server, insbesondere in Umgebungen, in denen CLR-Funktionen nicht verfügbar sind. Beachten Sie die Verwendung von nvarchar(max)
zur Verarbeitung potenziell großer verketteter Zeichenfolgen.
Das obige ist der detaillierte Inhalt vonWie können Zeichenfolgen aus mehreren Zeilen in SQL Server ohne CLR-Funktionen effizient verkettet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!