sql >> Databáze >  >> RDS >> Oracle

přidejte čárku (,) v Oracle

Oracle nemá funkci jako GROUP_CONCAT MySQL, což je přesně funkce, kterou požadujete. Na této stránce jsou uvedeny různé možnosti pro takovou agregaci řetězců - Jedním z nich je použití vlastní funkce:

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;

Pak byste to použili takto:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...nahrazení "?" s hodnotou primárního klíče.

Dříve

Za předpokladu, že chcete pouze přidat čárku na konec hodnoty sloupce, použijte:

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

Dvojitá trubka -- "||" -- je Oracle [,PostgreSQL a nyní ANSI] prostředek pro zřetězení řetězců v SQL. K explicitnímu převodu datového typu jsem použil TO_CHAR, ale můžete použít:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...pokud to není nutné.



  1. Sečtěte top 5 hodnot v MySQL

  2. Optimalizace dotazu MySQL LIKE term% ORDER BY int

  3. SQL:Vyberte transakce, kde řádky nejsou podle kritérií ve stejné tabulce

  4. Jak ignorovat duplicitní řádky při vkládání