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!