Oracle
 sql >> Baza danych >  >> RDS >> Oracle

dodaj przecinek (,) w Oracle

Oracle nie ma funkcji takiej jak GROUP_CONCAT w MySQL, która jest dokładnie taką funkcjonalnością, o jaką prosisz. Różne opcje takiej agregacji ciągów są dostępne na tej stronie - jednym jest użycie funkcji niestandardowej:

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;

Wtedy użyjesz go tak:

SELECT get_subjectkey(?) AS subject_key
  FROM DUAL

...zastępując „?” z wartością klucza podstawowego.

Wcześniej

Zakładając, że chcesz tylko dodać przecinek na końcu wartości kolumny, użyj:

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

Podwójna rurka -- "||" -- jest sposobem Oracle [,PostgreSQL, a teraz ANSI] do łączenia łańcuchów w SQL. Użyłem TO_CHAR do jawnej konwersji typu danych, ale możesz użyć:

SELECT DISTINCT subject_key || ','
  FROM MYTABLE

...jeśli to nie jest konieczne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Gdzie są moje łatki?

  2. Jak zmienić symbol waluty sesji w Oracle?

  3. śledź wypowiedzi wyroczni

  4. PreparedStatement ma wartość null w klauzuli Where bez warunkowych warunkowych (zapytanie dynamiczne) lub bezużytecznych wartości

  5. ORA - 00933 zamieszanie ze sprzężeniem wewnętrznym i as