Maison > base de données > tutoriel mysql > Comment puis-je concaténer efficacement plusieurs lignes en une seule ligne dans Oracle SQL ?

Comment puis-je concaténer efficacement plusieurs lignes en une seule ligne dans Oracle SQL ?

Susan Sarandon
Libérer: 2025-01-05 13:32:40
original
1024 Les gens l'ont consulté

How Can I Efficiently Concatenate Multiple Rows into a Single Row in Oracle SQL?

Manipulation des données dans Oracle : concaténer plusieurs lignes en une seule

Dans Oracle, concaténer efficacement plusieurs lignes en une seule est souvent une opération souhaitée. Cette question plonge dans un scénario spécifique où un tableau contient des données au format suivant :

question_id element_id
1 7
1 8
2 9
3 10
3 11
3 12

L'objectif est de transformer ces données en le résultat souhaité suivant :

question_id element_id
1 7,8
2 9
3 10,11,12

Pour accomplir Pour accomplir efficacement cette tâche sans recourir à des procédures stockées, Oracle 11gR2 a introduit la clause LISTAGG. Cette clause remarquable permet d'effectuer de telles opérations de concaténation directement au sein d'une seule instruction SQL.

Voici comment l'implémenter dans votre requête Oracle :

SELECT question_id,
       LISTAGG(element_id, ',') WITHIN GROUP (ORDER BY element_id)
FROM YOUR_TABLE
GROUP BY question_id;
Copier après la connexion

La clause LISTAGG prend la forme suivante :

LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression)
Copier après la connexion

Dans ce cas, nous précisons la colonne "element_id" comme expression et "," comme délimiteur pour séparer les valeurs concaténées. La clause WITHIN GROUP garantit que la concaténation est effectuée au sein de chaque groupe, qui est défini par la colonne "question_id".

Il convient de noter que la chaîne concaténée résultante peut dépasser la limite de longueur maximale pour un type de données VARCHAR2 ( 4000 caractères). Pour résoudre ce problème potentiel, Oracle 12cR2 a introduit l'option ON OVERFLOW TRUNCATE/ERROR. En incorporant cette option, vous pouvez spécifier s'il faut tronquer la chaîne ou générer une erreur si la limite de longueur est dépassée.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal