SQL Azure String-effiziente Verbindungslösung
In SQL Azure ist die effiziente Zusammenfassung unterschiedlicher Zeichenfolgendaten in einer einzigen Entität von entscheidender Bedeutung. Aufgrund des Mangels an benutzerdefinierten CLR-Aggregatfunktionen in SQL Azure müssen effiziente Alternativen gefunden werden.
Transact SQL-Lösung
Eine effiziente Möglichkeit ist die Verwendung der WITH-Klausel und des rekursiven CTE (Common Table Expression). Diese Methode beinhaltet:
Beschreibung
Bitte beachten Sie die folgende Anfrage:
<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>
Beispiel
Für die folgenden Daten:
<code>ID Name ------- -------- 1 Matt 1 Rocks 2 Stylus 3 Foo 3 Bar 3 Baz</code>
Gibt die folgenden Gesamtergebnisse zurück:
<code>ID FullName ------- --------------------- 1 Matt, Rocks 2 Stylus 3 Foo, Bar, Baz</code>
Vorteile
Hinweis: Um den Längenüberlauf des Datentyps nvarchar zu vermeiden, ändern Sie den Typ von CAST in nvarchar(max). Darüber hinaus unterscheidet sich die Sortierung in den Beispielergebnissen geringfügig vom Originaltext. Dies liegt daran, dass die Sortierbasis von ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Name) das Feld „Name“ ist, was zu Unterschieden in den Sortierergebnissen führt. Wenn Sie eine bestimmte Sortiermethode benötigen, ändern Sie die ORDER BY-Klausel.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen in SQL Azure ohne CLR-Aggregatfunktionen optimal verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!