Agrégation de plusieurs lignes de base de données en une seule chaîne délimitée par des virgules
Les tâches de base de données nécessitent souvent de consolider plusieurs lignes en une seule liste séparée par des virgules. Les bases de données Oracle apportent des solutions efficaces pour cela en utilisant les fonctions LISTAGG
ou WM_CONCAT
. Bien que WM_CONCAT
soit obsolète, LISTAGG
(disponible à partir d'Oracle 11.2) offre une flexibilité supérieure et constitue l'approche recommandée. Les deux fonctions obtiennent le même résultat de base : combiner des lignes en une chaîne délimitée.
Considérez une requête récupérant les noms de pays :
<code class="language-sql">SELECT * FROM countries;</code>
Pour générer une liste de ces noms séparés par des virgules, utilisez LISTAGG
:
<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name) FROM countries;</code>
Cela renvoie une seule ligne contenant tous les noms de pays, soigneusement séparés par des virgules et classés par ordre alphabétique.
Pour les bases de données prenant en charge le WM_CONCAT
obsolète, l'équivalent serait :
<code class="language-sql">SELECT WM_CONCAT(country_name) FROM countries;</code>
Bien que les deux produisent un résultat similaire, LISTAGG
offre des avantages. Il permet de personnaliser le délimiteur et permet de contrôler l'ordre des valeurs agrégées. Consultez la documentation de votre base de données pour les LISTAGG
paramètres de fonction détaillés.
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!