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

Wie verkette ich SQL-Abfrageergebnisse zu einer einzelnen Zeichenfolge?

Susan Sarandon
Susan SarandonOriginal
2025-01-04 10:19:35459Durchsuche

How to Concatenate SQL Query Results into a Single String?

SQL-Abfrageergebnisse zu einer einzelnen Zeichenfolge verketten

Problem:

In SQL enthält eine Funktion eine Abfrage, die abruft eine Liste von CodeName-Werten aus der AccountCodes-Tabelle, sortiert nach Sortierung. Das Ziel besteht darin, diese Werte zu einer einzelnen Zeichenfolge zu verketten und das Ergebnis in einer CodeNameString-Variable zu speichern.

Lösung:

Verwendung von FOR XML PATH und STUFF ( SQL Server 2005 oder höher):

DECLARE @CodeNameString varchar(100)

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

Diese Methode verwendet die FOR XML PATH-Klausel um die CodeName-Werte in einer XML-Zeichenfolge zu verketten. Das resultierende XML wird dann mithilfe der STUFF-Funktion zurück in eine Zeichenfolge konvertiert, wobei das erste Zeichen (ein Komma) entfernt wird.

Hinweis: Dieser Ansatz funktioniert möglicherweise nicht, wenn die CodeName-Werte Folgendes enthalten bestimmte Zeichen wie <, > oder &. In solchen Fällen wird eine alternative Lösung empfohlen, wie die unten vorgeschlagene:

Alternative Lösung (mit DISTINCT und FOR XML RAW):

DECLARE @CodeNameString varchar(100)

SELECT 
   @CodeNameString = DISTINCT(CodeName) 
WHERE 
   EXISTS (SELECT 1 FROM dbo.AccountCodes WHERE CodeName = @CodeNameString)
FOR XML RAW, ',')

Dies Die Methode verwendet die FOR XML RAW-Klausel, um eine XML-Zeichenfolge zu erstellen, die die verketteten Werte enthält, ausgenommen Duplikate. Der String wird dann der CodeNameString-Variable zugewiesen.

Das obige ist der detaillierte Inhalt vonWie verkette ich SQL-Abfrageergebnisse zu 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