Maison >base de données >tutoriel mysql >Comment agréger des lignes dans des listes séparées par des virgules dans 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!