Maison >base de données >tutoriel mysql >Comment puis-je concaténer efficacement des chaînes de plusieurs lignes dans SQL Azure sans fonctions CLR ?
Au-delà de COALESCE et FOR XML : agrégation efficace de chaînes dans SQL Azure
De nombreux développeurs recherchant une concaténation efficace de chaînes à partir de plusieurs lignes SQL rencontrent des limitations avec les fonctions standard telles que COALESCE
et FOR XML
dans SQL Azure, en particulier lorsque les fonctions CLR ne sont pas disponibles. Cet article présente une solution Transact-SQL puissante utilisant des expressions de table communes (CTE) pour une agrégation de chaînes robuste et efficace.
La solution : CTE récursifs pour la concaténation séquentielle
Notre approche s'appuie sur deux CTE :
Partitioned
CTE : Ceci attribue des numéros de ligne à chaque entrée en fonction de la colonne ID
, en les classant par ordre alphabétique selon la colonne Name
. Cette étape cruciale regroupe les lignes avec le même ID
et garantit un ordre de concaténation cohérent.
Concatenated
CTE (Récursif) : Ce CTE construit de manière itérative la chaîne concaténée. Il ajoute récursivement des noms à une colonne FullName
, accumulant le résultat final.
La requête principale sélectionne ensuite uniquement les lignes avec le numéro de ligne le plus élevé pour chaque ID
, produisant la chaîne agrégée complète pour chaque groupe.
Options de répartition détaillée et de personnalisation
La méthode comprend trois étapes principales :
FullName
.ID
unique.Cette technique offre de la flexibilité. Vous pouvez ajuster le regroupement (ID
dans cet exemple) et les critères de tri (ordre alphabétique de Name
ici) pour répondre à votre structure de données et à vos exigences spécifiques. Des résultats cohérents dépendent de la définition des paramètres de regroupement et de tri.
Exemple illustratif et résultat
Utilisons cet exemple de données :
<code class="language-sql">INSERT dbo.SourceTable (ID, Name) VALUES (1, 'Matt'), (1, 'Rocks'), (2, 'Stylus'), (3, 'Foo'), (3, 'Bar'), (3, 'Baz')</code>
L'exécution de la requête produira :
<code>ID FullName ----------- ------------------------------ 2 Stylus 3 Bar, Baz, Foo 1 Matt, Rocks</code>
Cela démontre clairement la concaténation efficace des chaînes sur plusieurs lignes, offrant une alternative fiable aux fonctions CLR pour les tâches d'agrégation de chaînes SQL Azure.
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!