Heim >Datenbank >MySQL-Tutorial >Wie verkettet man SQL-Abfrageergebnisse effizient in einer einzelnen Zeichenfolge?

Wie verkettet man SQL-Abfrageergebnisse effizient in einer einzelnen Zeichenfolge?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-03 09:42:43213Durchsuche

How to Efficiently Concatenate SQL Query Results into a Single String?

Sammeln von SQL-Abfrageergebnissen in einer einzelnen Zeichenfolge

Das Verketten von Abfrageergebnissen in einer einzelnen Zeichenfolge ist eine häufige Aufgabe bei der Datenbankprogrammierung. In SQL Server gibt es zwei Ansätze, um dies zu erreichen: die Verwendung der FOR XML PATH & STUFF-Technik oder die Nutzung der STRING_AGG-Funktion.

FOR XML PATH & STUFF

Für Bei SQL Server-Versionen 2005 und höher ist die Kombination FOR XML PATH & STUFF effektiv Ansatz:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STUFF( (SELECT ',' + CodeName 
                             FROM dbo.AccountCodes 
                             ORDER BY Sort
                             FOR XML PATH('')), 
                            1, 1, '')

Diese Lösung verkettet die Ergebnisse mit FOR XML PATH('') in einer XML-Zeichenfolge und verwendet dann STUFF, um das anfängliche Komma zu entfernen, das von der XML-Verkettung geerbt wurde.

STRING_AGG-Funktion

In SQL Server 2017 und höher die STRING_AGG-Funktion bietet eine spezielle Lösung für diese Aufgabe:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STRING_AGG(CodeName, ',')
FROM 
   dbo.AccountCodes
ORDER BY 
   Sort

Die Funktion STRING_AGG verkettet die Ergebnisse direkt in einer einzelnen Zeichenfolge, getrennt durch das angegebene Trennzeichen (in diesem Fall „,“).

Umgang mit Sonderzeichen

Es ist wichtig zu beachten, dass der FOR XML PATH & STUFF-Ansatz bestimmte Zeichen codieren kann Sonderzeichen wie „<“, „>“ und „&“ in XML-Entitäten (<, > und &) umwandeln. In Situationen, in denen diese Zeichen problematisch sind, kann die Funktion STRING_AGG mit der Klausel USING XMLTYPE verwendet werden:

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = STRING_AGG(CodeName, ',') USING XMLTYPE
FROM 
   dbo.AccountCodes
ORDER BY 
   Sort

Das obige ist der detaillierte Inhalt vonWie verkettet man SQL-Abfrageergebnisse effizient in einer einzelnen Zeichenfolge?. 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