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

Oracle 12:Bergabung dengan daftar yang dipisahkan koma?

Anda dapat membagi daftar companies.legal_contacts menggunakan ekspresi reguler, lalu gabungkan kumpulan hasil dengan kontak untuk mendapatkan alamat email (gabung dua kali untuk mendapatkan ceo email juga) dan kemudian gabungkan kembali email menggunakan listagg fungsi:

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;

jika companies.legal_contacts dapat berisi banyak nilai, penggunaan ekspresi reguler sedikit berubah karena alasan kinerja dan Anda harus menggunakan 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. Bagaimana mengatasi ORA-29283 :operasi file tidak valid

  2. Oracle-XMLTYPE :Cara memperbarui nilai

  3. APPL_TOP bertahap di Oracle Applications R12

  4. Oracle:Prosedur tersimpan Java mengirim Pesan JMS

  5. Oracle:Pencarian teks lengkap dengan kondisi