Maison >base de données >tutoriel mysql >Comment agréger des lignes dans des listes séparées par des virgules dans Oracle ?

Comment agréger des lignes dans des listes séparées par des virgules dans Oracle ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-19 17:57:10498parcourir

How to Aggregate Rows into Comma-Separated Lists in Oracle?

Oracle : combiner des lignes dans des listes séparées par des virgules

Fréquemment, la manipulation des données nécessite l'agrégation de plusieurs lignes en une seule chaîne délimitée par des virgules. Oracle propose plusieurs méthodes pour y parvenir :

Méthode 1 : LISTAGG (Oracle 11.2 et versions ultérieures)

La fonction LISTAGG (disponible à partir d'Oracle 11.2) concatène efficacement les lignes à l'aide d'un délimiteur spécifié. Sa syntaxe est :

<code class="language-sql">LISTAGG(expression, delimiter [, separator]) WITHIN GROUP (ORDER BY order_expression)</code>

Exemple : Générer une liste de noms de pays séparés par des virgules à partir d'une table countries :

<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name)
FROM countries;</code>

Méthode 2 : WM_CONCAT (versions Oracle antérieures à 11.2)

Pour les anciennes bases de données Oracle (avant 11.2), la fonction WM_CONCAT offre une fonctionnalité similaire :

<code class="language-sql">SELECT WM_CONCAT(country_name)
FROM countries;</code>

Méthode 3 : Fonction PL/SQL personnalisée

Si ni LISTAGG ni WM_CONCAT ne suffisent, une fonction PL/SQL personnalisée offre une solution flexible. Cela permet une logique de concaténation personnalisée, comme le démontre l'exemple fourni utilisant des boucles et la concaténation de chaînes.

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