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

Oracle 12:Tham gia vào danh sách được phân tách bằng dấu phẩy?

bạn có thể tách danh sách companies.legal_contacts sử dụng biểu thức chính quy, sau đó kết hợp tập hợp kết quả với các liên hệ để lấy địa chỉ email (tham gia hai lần để nhận ceo thư cũng vậy) và sau đó nối lại các email bằng cách sử dụng listagg chức năng:

SELECT co.company_id, p1.email, LISTAGG(p2.email, ', ') WITHIN GROUP (ORDER BY p2.email)
  FROM (
        SELECT DISTINCT company_id, ceo, REGEXP_SUBSTR(legal_contacts, '[^, ]+', 1, LEVEL) AS single_contact   
          FROM COMPANIES
       CONNECT BY REGEXP_SUBSTR(legal_contacts, '[^, ]+', 1, LEVEL) IS NOT NULL) co
  LEFT JOIN CONTACTS p1 ON co.ceo = p1.person_id
  LEFT JOIN CONTACTS p2 ON co.single_contact = p2.person_id
 GROUP BY co.company_id, p1.email;

nếu companies.legal_contacts có thể chứa nhiều giá trị, việc sử dụng biểu thức chính quy thay đổi một chút vì lý do hiệu suất và bạn phải sử dụng MULTISET.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đám mây Oracle:Tạo Cơ sở dữ liệu Xử lý Giao dịch Tự động (ATP)

  2. Làm thế nào để trả về một RefCursor từ hàm Oracle?

  3. Truy vấn cập nhật Oracle sử dụng Tham gia

  4. Oracle 12cR2 hiện đang trong giai đoạn Beta

  5. Kiểm tra sid oracle và tên cơ sở dữ liệu