Maison >base de données >tutoriel mysql >Comment concaténer les résultats d'une requête SQL en une seule chaîne ?
Problème :
En SQL, une fonction inclut une requête qui récupère une liste de valeurs CodeName de la table AccountCodes classées par tri. Le but est de concaténer ces valeurs en une seule chaîne et de stocker le résultat dans une variable CodeNameString.
Solution :
Utiliser FOR XML PATH et STUFF ( SQL Server 2005 ou version ultérieure) :
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')
Cette méthode utilise la clause FOR XML PATH pour concaténer les valeurs CodeName dans une chaîne XML. Le XML résultant est ensuite reconverti en chaîne à l'aide de la fonction STUFF, le premier caractère (une virgule) étant supprimé.
Remarque : Cette approche peut ne pas fonctionner si les valeurs CodeName contiennent des caractères spécifiques tels que <, > ou &. Dans de tels cas, une solution alternative est recommandée, telle que celle proposée ci-dessous :
Solution alternative (utilisant DISTINCT et FOR XML RAW) :
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = DISTINCT(CodeName) WHERE EXISTS (SELECT 1 FROM dbo.AccountCodes WHERE CodeName = @CodeNameString) FOR XML RAW, ',')
Cette La méthode utilise la clause FOR XML RAW pour créer une chaîne XML contenant les valeurs concaténées, à l'exclusion des doublons. La chaîne est ensuite affectée à la variable CodeNameString.
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!