sql >> Database teknologi >  >> RDS >> Oracle

tilføje et komma (,) i Oracle

Oracle har ikke en funktion som MySQL's GROUP_CONCAT, hvilket er præcis den funktionalitet du efterspørger. Forskellige muligheder for en sådan strengsammenlægning findes på denne side - den ene er at bruge en brugerdefineret 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;

Så ville du bruge det som:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...erstatter "?" med den primære nøgleværdi.

Tidligere

Hvis du blot vil tilføje et komma til slutningen af ​​kolonneværdien, skal du bruge:

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

Dobbeltrøret -- "||" -- er Oracle [,PostgreSQL og nu ANSI] midlet til at sammenkæde strenge i SQL. Jeg brugte TO_CHAR til eksplicit at konvertere datatypen, men du kunne bruge:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...hvis det ikke er nødvendigt.



  1. Jooq LocalDateTime-felter bruger systemets tidszone i stedet for sessionens tidszone

  2. Hvad er den rigtige syntaks for IF-sætning i MySQL?

  3. Multiple Column Foreign Key:Indstil enkelt kolonne til Null ON SLET i stedet for alle

  4. Codeigniter Join med flere betingelser