Maison >base de données >tutoriel mysql >Comment concaténer efficacement les résultats d'une requête SQL en une seule chaîne ?
Accumuler les résultats d'une requête SQL dans une seule chaîne
Concaténer les résultats d'une requête dans une seule chaîne est une tâche courante dans la programmation de bases de données. Dans SQL Server, il existe deux approches pour y parvenir : utiliser la technique FOR XML PATH & STUFF ou exploiter la fonction STRING_AGG.
FOR XML PATH & STUFF
Pour SQL Server versions 2005 et supérieures, la combinaison FOR XML PATH & STUFF est une approche efficace :
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')
Cette solution concatène les résultats en utilisant FOR XML PATH('') dans une chaîne XML, puis utilise STUFF pour supprimer la virgule initiale héritée de la concaténation XML.
Fonction STRING_AGG
Dans SQL Server 2017 et versions ultérieures, la fonction STRING_AGG fournit une solution dédiée à cela tâche :
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') FROM dbo.AccountCodes ORDER BY Sort
La fonction STRING_AGG concatène les résultats directement en une seule chaîne, séparés par le délimiteur spécifié (dans ce cas, ',').
Gestion des caractères spéciaux
Il est important de noter que l'approche FOR XML PATH & STUFF peut encoder certains caractères spéciaux, tels que '<', '>' et '&', en entités XML (<, > et &). Pour les situations où ces caractères posent problème, la fonction STRING_AGG avec la clause USING XMLTYPE peut être utilisée :
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STRING_AGG(CodeName, ',') USING XMLTYPE FROM dbo.AccountCodes ORDER BY Sort
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!