sql >> Base de Datos >  >> RDS >> Oracle

agregar una coma (,) en Oracle

Oracle no tiene una función como GROUP_CONCAT de MySQL, que es exactamente la funcionalidad que está solicitando. En esta página se proporcionan varias opciones para dicha agregación de cadenas - uno es usar una función personalizada:

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;

Entonces lo usarías como:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...Reemplazo de la "?" con el valor de la clave principal.

Anteriormente

Suponiendo que solo desea agregar una coma al final del valor de la columna, use:

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

El tubo doble -- "||" -- es el medio de Oracle [, PostgreSQL y ahora ANSI] para concatenar cadenas en SQL. Usé TO_CHAR para convertir explícitamente el tipo de datos, pero podrías usar:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...si eso no es necesario.