Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah ada fungsi di Oracle yang mirip dengan group_concat di mysql?

11g dan lebih tinggi: Gunakan listagg:

SELECT 
    col1,
    LISTAGG(col2, ', ') WITHIN GROUP (ORDER BY col2) "names"
FROM table_x
GROUP BY col1

10g dan lebih rendah: Salah satu metode adalah dengan menggunakan fungsi:

CREATE OR REPLACE FUNCTION get_comma_separated_value (input_val  in  number)
  RETURN VARCHAR2
IS
  return_text  VARCHAR2(10000) := NULL;
BEGIN
  FOR x IN (SELECT col2 FROM table_name WHERE col1 = input_val) LOOP
    return_text := return_text || ',' || x.col2 ;
  END LOOP;
  RETURN LTRIM(return_text, ',');
END;
/

Untuk menggunakan fungsi:

select col1, get_comma_separated_value(col1) from table_name

Catatan: Ada fungsi (tidak didukung) WM_CONCAT tersedia di Oracle versi lama tertentu, yang mungkin dapat membantu Anda - lihat di sini untuk detailnya.

Di MySQL:

SELECT col1, GROUP_CONCAT(col2) FROM table_name GROUP BY col1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan sintaks dengan permintaan pembaruan saat bergabung dengan beberapa tabel

  2. Pisahkan nilai yang dipisahkan koma ke kolom di Oracle

  3. HikariCP:Batas waktu level basis data apa yang harus dipertimbangkan untuk mengatur maxLifetime untuk Oracle 11g

  4. Perbaiki Kesalahan "ORA-01789:blok kueri memiliki jumlah kolom hasil yang salah"

  5. INSERT dan UPDATE catatan menggunakan kursor di oracle