Heim >Datenbank >MySQL-Tutorial >Wie verkette ich SQL-Abfrageergebnisse in einer einzelnen Zeichenfolge in SQL Server?
SQL-Abfrageergebnisse zu einer einzigen Zeichenfolge verketten
In SQL Server kann die Aufgabe gelöst werden, mehrere Abfrageergebnisse in einer einzigen Zeichenfolge zu kombinieren unter Verwendung verschiedener Techniken.
FÜR XML-PFAD und STUFF
Für SQL Server 2005 und höher bietet die Kombination von FOR XML PATH und STUFF einen unkomplizierten Ansatz:
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')
Diese Methode verkettet die Abfrageergebnisse in einer einzigen XML-Zeichenfolge und Verwendet dann STUFF, um das führende ","-Zeichen zu entfernen.
XML-basiert Verkettung
Eine weitere Option ist die Nutzung der XML-Verkettungsfunktion:
DECLARE @CodeNameString varchar(100) SET @CodeNameString = (SELECT CodeName FROM dbo.AccountCodes FOR XML PATH(''))
Cursorbasierter Ansatz
In Fällen, in denen eine XML-Verkettung vorliegt Da dies nicht möglich ist, kann ein Cursor-basierter Ansatz verwendet werden:
DECLARE @CodeNameString varchar(100) DECLARE @CodeName varchar(50) DECLARE cursor CURSOR FOR SELECT CodeName FROM dbo.AccountCodes ORDER BY Sort OPEN CURSOR FETCH NEXT FROM CURSOR INTO @CodeName WHILE @@FETCH_STATUS = 0 BEGIN SET @CodeNameString = @CodeNameString + @CodeName + ',' FETCH NEXT FROM CURSOR INTO @CodeName END CLOSE CURSOR DEALLOCATE CURSOR
Diese Methode durchläuft die Abfrageergebnisse und hängt sie an die @CodeNameString-Variable an.
Der bevorzugte Ansatz
Der bevorzugte Ansatz hängt von der SQL Server-Version und spezifischen Datenmerkmalen ab. Für Fälle, in denen die Daten Sonderzeichen wie „<“, „>“ enthalten oder „&“, erwägen Sie die Verwendung der FOR XML PATH- und STUFF-Technik, während für größere Datensätze oder leistungsempfindliche Szenarien der Cursor-basierte Ansatz möglicherweise besser geeignet ist.
Das obige ist der detaillierte Inhalt vonWie verkette ich SQL-Abfrageergebnisse in einer einzelnen Zeichenfolge in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!