Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle 12:Присъединяване към разделен със запетая списък?

можете да разделите списъка с companies.legal_contacts използвайки регулярен израз, след което присъединете резултантния набор с контакти, за да получите имейл адресите (присъединете се два пъти, за да получите ceo поща също) и след това отново свържете имейлите с помощта на listagg функция:

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;

ако companies.legal_contacts може да съдържа много стойности, използването на регулярен израз се променя малко от съображения за производителност и трябва да използвате МУЛТИНАБОР.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Друга бяла книга за 12c Optimizer

  2. Параметризирана заявка в проблем с Oracle

  3. Премахване на дублиращи се редове в таблица

  4. Предварително изградена база данни на Oracle за обучение и тестване с помощта на Oracle Developer VM

  5. Oracle 11g - Проверете ограничението с RegEx