Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Có chức năng nào trong oracle tương tự như group_concat trong mysql không?

11g trở lên: Sử dụng listagg:

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

10g trở xuống: Một phương pháp là sử dụng một hàm:

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;
/

Để sử dụng chức năng:

select col1, get_comma_separated_value(col1) from table_name

Lưu ý: Có một hàm (không được hỗ trợ) WM_CONCAT có sẵn trên một số phiên bản Oracle cũ hơn, có thể giúp ích cho bạn - xem tại đây để biết chi tiết.

Trong 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. Cập nhật các cột có giá trị Null

  2. NLS_NUMERIC_CHARACTERS cài đặt cho số thập phân

  3. Cách tối ưu để XÓA các hàng được chỉ định khỏi Oracle

  4. Cài đặt các biểu mẫu và báo cáo Oracle 11g Release 2

  5. Nhận danh sách tất cả các bảng trong Oracle?