sql >> Databasteknik >  >> RDS >> Oracle

lägg till ett kommatecken (,) i Oracle

Oracle har inte en funktion som MySQL:s GROUP_CONCAT, vilket är exakt den funktionalitet du efterfrågar. Olika alternativ för sådan strängaggregation finns på den här sidan - en är att använda en anpassad 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;

Då skulle du använda det som:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...ersätter "?" med det primära nyckelvärdet.

Tidigare

Om du antar att du bara vill lägga till ett kommatecken i slutet av kolumnvärdet, använd:

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

Dubbelröret -- "||" -- är Oracle [,PostgreSQL och nu ANSI] sättet att sammanfoga strängar i SQL. Jag använde TO_CHAR för att explicit konvertera datatypen, men du kan använda:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...om det inte är nödvändigt.



  1. ladda ner värden för sql-tabellen för offlineåteranvändning

  2. Hur man infogar List <Produkter> i databasen

  3. Korstabellbegränsningar i PostgreSQL

  4. MYSQL Inner Sammanfoga två bord över två nycklar