Maison > base de données > tutoriel mysql > Existe-t-il un équivalent LISTAGG dans les anciennes versions d'Oracle au GROUP_CONCAT de MySQL ?

Existe-t-il un équivalent LISTAGG dans les anciennes versions d'Oracle au GROUP_CONCAT de MySQL ?

Patricia Arquette
Libérer: 2025-01-15 12:19:45
original
187 Les gens l'ont consulté

Is There a LISTAGG Equivalent in Older Oracle Versions to MySQL's GROUP_CONCAT?

Existe-t-il un équivalent de GROUP_CONCAT pour MySQL dans Oracle ?

Question :

Comment concaténer plusieurs valeurs dans une colonne spécifiée en une seule chaîne séparée par des virgules dans Oracle ? Les données d'entrée suivent un format spécifique et la sortie souhaitée doit regrouper et concaténer les valeurs pour chaque clé unique.

Réponse :

Pour Oracle 11g et supérieur :

Utilisez la fonction LISTAGG :

SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1
Copier après la connexion

Pour Oracle 10g et inférieur :

Une solution consiste à créer une fonction personnalisée :

CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val  IN  NUMBER)
  RETURN VARCHAR2
IS
  return_text  VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2 ;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/
Copier après la connexion

Comment utiliser :

SELECT col1, get_comma_separated_value(col1) FROM table_name
Copier après la connexion

Remarque : Les versions Oracle antérieures à 11g ont une prise en charge limitée de la fonction WM_CONCAT, mais son utilisation est obsolète en raison de problèmes potentiels (voir la documentation Oracle pour plus de détails).

Dans MySQL (pour référence seulement) :

Fonction GROUP_CONCAT disponible :

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1
Copier après la connexion

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