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
Freigeben: 2025-01-25 02:17:08
Original
375 Leute haben es durchsucht

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>
Nach dem Login kopieren

in das folgende Format:

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
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