Maison >base de données >tutoriel mysql >Comment obtenir la fonctionnalité GROUP_CONCAT dans Oracle ?

Comment obtenir la fonctionnalité GROUP_CONCAT dans Oracle ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-15 12:28:44379parcourir

How to Achieve GROUP_CONCAT Functionality in Oracle?

Opération de jointure de groupe dans Oracle

La fonction GROUP_CONCAT de MySQL peut concaténer les valeurs regroupées de plusieurs lignes en une chaîne. Il n'existe pas de fonction équivalente exacte dans Oracle, mais il existe plusieurs façons d'obtenir des fonctionnalités similaires.

Oracle 11g et supérieur utilise LISTAGG

Oracle 11g a introduit la fonction LISTAGG, qui agrège les valeurs dans des chaînes séparées par des virgules :

<code class="language-sql">SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) AS names
FROM table_x
GROUP BY col1</code>

Oracle 10g et versions inférieures utilisent des fonctions personnalisées

Pour Oracle 10g et versions antérieures, vous pouvez créer une fonction personnalisée :

<code class="language-sql">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;
/</code>

Comment utiliser :

<code class="language-sql">SELECT col1, get_comma_separated_value(col1) FROM table_name</code>

Remarque : Il existe une fonction (non prise en charge) WM_CONCAT disponible dans certaines anciennes versions d'Oracle.

Méthode alternative dans MySQL (à titre de comparaison)

Dans MySQL, vous pouvez utiliser la fonction GROUP_CONCAT :

<code class="language-sql">SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1</code>

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