Heim >Datenbank >MySQL-Tutorial >Wie verkette ich SQL-Abfrageergebnisse in einer einzelnen Zeichenfolge in SQL Server?

Wie verkette ich SQL-Abfrageergebnisse in einer einzelnen Zeichenfolge in SQL Server?

Barbara Streisand
Barbara StreisandOriginal
2024-12-27 22:09:10463Durchsuche

How to Concatenate SQL Query Results into a Single String 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!

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