Heim >Datenbank >MySQL-Tutorial >Wie kann ich Zeichenfolgen innerhalb der GROUP BY-Klausel von SQL Server effizient verketten?

Wie kann ich Zeichenfolgen innerhalb der GROUP BY-Klausel von SQL Server effizient verketten?

Linda Hamilton
Linda HamiltonOriginal
2025-01-25 02:17:08377Durchsuche

How Can I Efficiently Concatenate Strings within SQL Server's GROUP BY Clause?

Streamlining -String -Verkettung in der GROUP BY -Klausel

von SQL Server

Diese Anleitung zeigt eine prägnante Methode zur Verkettung von Zeichenfolgen innerhalb einer GROUP BY -Klausel in SQL -Server, wodurch weniger effiziente Techniken wie Cursors oder Loops vermieden werden. Ziel ist es, Daten wie folgt zu transformieren:

<code class="language-sql">id | Name | Value
---|-----|------
1  | A    | 4
1  | B    | 8
2  | C    | 9</code>

in das folgende Format:

<code class="language-sql">id | Column
---|-------
1  | A:4, B:8
2  | C:9</code>

Die Lösung verwendet die leistungsstarke Kombination von FOR XML PATH und STUFF. Dieser Ansatz ist effizient und funktioniert für SQL Server 2005 und spätere Versionen.

Hier ist die SQL -Abfrage:

<code class="language-sql">CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT);

INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4);
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8);
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9);

SELECT 
  [ID],
  STUFF((
    SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX)) 
    FROM #YourTable 
    WHERE (ID = Results.ID) 
    FOR XML PATH(''), TYPE
  ).value('(./text())[1]', 'VARCHAR(MAX)'), 1, 2, '') AS NameValues
FROM #YourTable Results
GROUP BY ID;

DROP TABLE #YourTable;</code>

Die innere SELECT Anweisung konstruiert die verkettete Zeichenfolge mit FOR XML PATH('') und erstellt eine XML -Darstellung, die dann mit .value() in eine Zeichenfolge konvertiert wird. Die STUFF -Funktion entfernt elegant das anfängliche Komma und Raum. Diese Methode vermeidet den Leistungsaufwand iterativer Ansätze.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeichenfolgen innerhalb der GROUP BY-Klausel von SQL Server effizient verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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