Maison >base de données >tutoriel mysql >Comment LISTAGG ou WM_CONCAT peuvent-ils combiner plusieurs lignes de base de données en une seule liste séparée par des virgules ?

Comment LISTAGG ou WM_CONCAT peuvent-ils combiner plusieurs lignes de base de données en une seule liste séparée par des virgules ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-19 18:02:09383parcourir

How Can LISTAGG or WM_CONCAT Combine Multiple Database Rows into a Single Comma-Separated List?

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!

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