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!