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

Trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong Oracle

Trong Oracle, chúng ta có thể sử dụng LISTAGG() chức năng chuyển đổi kết quả truy vấn của chúng tôi thành một danh sách được phân tách bằng dấu phẩy.

Vì vậy, thay vì mỗi giá trị được xuất trong một hàng riêng biệt, tất cả các giá trị được xuất trong một hàng duy nhất, được phân tách bằng dấu phẩy (hoặc một số dấu phân tách khác mà chúng tôi chọn).

Ví dụ

Hãy tưởng tượng chúng ta chạy truy vấn sau:

SELECT last_name 
FROM employees
WHERE job_id = 'IT_PROG';

Kết quả:

   LAST_NAME 
____________ 
Hunold       
Ernst        
Austin       
Pataballa    
Lorentz      

Truy vấn đó trả về năm hàng, mỗi hàng có một giá trị khác nhau.

Nếu chúng ta muốn các giá trị đó được xuất trên một hàng, chúng ta có thể làm như sau:

SELECT LISTAGG(last_name, ', ')
FROM employees
WHERE job_id = 'IT_PROG';

Kết quả:

                      LISTAGG(LAST_NAME,',') 
____________________________________________ 
Hunold, Ernst, Austin, Pataballa, Lorentz    

Tất cả những gì chúng tôi đã làm là chuyển tên cột vào LISTAGG() chức năng, cũng như dấu phân cách đã chọn của chúng tôi.

Chúng ta có thể sử dụng một dấu phân tách khác hoặc chúng ta có thể bỏ qua hoàn toàn đối số đó để tất cả các mục được nối với nhau.

Hàm cũng chấp nhận DISTINCT mệnh đề (để loại bỏ các giá trị trùng lặp) và một ORDER BY mệnh đề (để sắp xếp đầu ra của hàm).

Hàm cũng có thể khá tiện dụng khi nhóm các kết quả truy vấn.

Xem LISTAGG() Hàm trong Oracle để có thêm ví dụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đẩy con trỏ đơn

  2. Viết trong ExcelSheet bằng gói UTL_FILE trong Oracle

  3. Xóa các số 0 ở đầu khỏi nhà phát triển varchar sql

  4. Ngoại lệ ORA-08103:đối tượng không còn tồn tại khi sử dụng setfetchsize của Hibernate

  5. Làm thế nào để viết một truy vấn tương tự như GROUP_CONCAT của MySQL trong Oracle?