Heim >Datenbank >MySQL-Tutorial >Wie verkettet man SQL-Abfrageergebnisse effizient in einer einzelnen Zeichenfolge?
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!