Oracle
 sql >> Base de données >  >> RDS >> Oracle

ajouter une virgule (,) dans Oracle

Oracle n'a pas de fonction comme GROUP_CONCAT de MySQL, qui est exactement la fonctionnalité que vous demandez. Diverses options pour une telle agrégation de chaînes sont fournies sur cette page - l'une consiste à utiliser une fonction personnalisée :

CREATE OR REPLACE FUNCTION get_subjectkey (IN_PK IN MYTABLE.PRIMARY_KEY%TYPE)
RETURN VARCHAR2
IS
  l_text  VARCHAR2(32767) := NULL;
BEGIN

  FOR cur_rec IN (SELECT subject_key 
                    FROM MYTABLE 
                   WHERE primary_key = IN_PK) LOOP
    l_text := l_text || ',' || cur_rec.ename;
  END LOOP;

  RETURN LTRIM(l_text, ',');
END;

Ensuite, vous l'utiliseriez comme :

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

... en remplaçant le "?" avec la valeur de la clé primaire.

Auparavant

En supposant que vous souhaitiez simplement ajouter une virgule à la fin de la valeur de la colonne, utilisez :

SELECT DISTINCT TO_CHAR(subject_key) || ','
  FROM MYTABLE

Le double tuyau -- "||" -- est le moyen Oracle [, PostgreSQL et maintenant ANSI] de concaténer des chaînes en SQL. J'ai utilisé TO_CHAR pour convertir explicitement le type de données, mais vous pouvez utiliser :

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...si ce n'est pas nécessaire.