


Comment puis-je concaténer efficacement plusieurs lignes en une seule ligne dans Oracle SQL ?
Jan 05, 2025 pm 01:32 PMManipulation 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;
La clause LISTAGG prend la forme suivante :
LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY expression)
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
