Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Fügen Sie in Oracle ein Komma (,) hinzu

Oracle hat keine Funktion wie GROUP_CONCAT von MySQL, was genau die Funktionalität ist, nach der Sie fragen. Verschiedene Optionen für eine solche String-Aggregation werden auf dieser Seite bereitgestellt - Eine davon ist die Verwendung einer benutzerdefinierten Funktion:

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;

Dann würden Sie es wie folgt verwenden:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...Ersetzen des "?" mit dem Primärschlüsselwert.

Früher

Angenommen, Sie möchten am Ende des Spaltenwerts nur ein Komma hinzufügen, verwenden Sie:

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

Das Doppelrohr -- "||" -- ist das Oracle [, PostgreSQL und jetzt ANSI] Mittel zum Verketten von Zeichenfolgen in SQL. Ich habe TO_CHAR verwendet, um den Datentyp explizit zu konvertieren, aber Sie könnten verwenden:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...wenn das nicht nötig ist.