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

Fungsi Ganti Oracle

Jika Anda tidak ingin memperbarui tabel yang ada dan hanya ingin memilih data, Anda dapat menggunakan kueri yang agak sulit ini.

http://sqlfiddle.com/#!4/22909/4

WITH changed_table AS
     (SELECT val1, EXTRACTVALUE (x.COLUMN_VALUE, 'e') val2new
        FROM (SELECT val1, val2 xml_str
                FROM table1),
             TABLE (XMLSEQUENCE (XMLTYPE (   '<e><e>'
                                          || REPLACE (xml_str, ',', '</e><e>')
                                          || '</e></e>'
                                         ).EXTRACT ('e/e')
                                )
                   ) x)
SELECT ct.val1, listagg(table2.val2,',') within group (order by table2.val2) val2
  FROM changed_table ct, table2 table2
 WHERE ct.val2new = table2.val1
group by ct.val1;

Saya telah menggunakan XMLTYPE untuk memisahkan angka yang dipisahkan koma menjadi baris. Kemudian menggabungkan baris dengan tabel kedua untuk mendapatkan deskripsi dan akhirnya menggunakan fungsi LISTAGG untuk membentuk string yang dipisahkan koma. Tidak tahu seberapa efisien kueri ini. Saya setuju dengan komentar Mark Bannister.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengimpor file dump ke Oracle 11gr2 mendapatkan kesalahan

  2. Alat pengembangan dan manajemen basis data Oracle yang bagus di Windows

  3. Bisakah EF6 menghasilkan objek model saya dari kursor ref yang dikembalikan oleh prosedur tersimpan Oracle?

  4. Waktu pembukaan koneksi SQL yang sangat lama

  5. Bisakah subquery digunakan dalam pernyataan Oracle ALTER?