Maison >base de données >tutoriel mysql >Comment concaténer les résultats d'une requête SQL en une seule chaîne ?

Comment concaténer les résultats d'une requête SQL en une seule chaîne ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-04 10:19:35481parcourir

How to Concatenate SQL Query Results into a Single String?

Concaténation des 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn