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

XML Oracle:Trích xuất nhiều nút con

Bạn có thể đạt được kết quả mong muốn bằng cách sử dụng XMLTable() chức năng:

select q.Lastname
     , q.Numberid
     , s.codeid
     , w.LoginId
     , q.address
  from t1 t
  left join xmltable('/begin/entry'
                      passing t.xml_col 
                      columns LastName   varchar2(21)  path 'lastname',
                              NumberId   number        path 'NumberList/number',
                              Address    varchar2(201) path 'address/addresslist',
                              CodeList   XmlType       Path 'NumberList/codelist/code',
                              Logins     XmlType       Path 'NumberList/login/user'
                      ) q
    on (1=1) 
  left join xmltable('/code'
                      passing q.CodeList
                      columns CodeId number path '.') s
    on (1=1)
  left join   xmltable('/user'
                        passing q.Logins
                        columns LoginId varchar2(11) path '.') w
    on (1=1)

Kết quả: SQLFiddle Demo

Lastname Numberid Codeid Loginid Address 
---------------------------------------------------------------------------
gordon   100      213    user1   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      213    user2   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      214    user1   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
gordon   100      214    user2   Jl. jalan pelan-pelan ke Bekasi, Indonesia 
mark     null     null   null    Jl. jalan cepet-cepet ke Jakarta, Indonesia 

Tìm hiểu thêm về XMLTable() chức năng.

Lưu ý :Làm việc với các bản phát hành Oracle trước 11.2.0.2, bạn có thể gặp phải ORA-1780 error (lỗi 8545377) trên một số loại truy vấn XML khi cursor_sharing tham số được đặt thành FORCE hoặc SIMILAR (không dùng nữa bắt đầu từ ngày 11.2). Đặt cursor_sharing tham số thành EXACT (giá trị mặc định), sẽ giải quyết vấn đề.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn có ký tự đại diện và dấu chấm không khớp với dữ liệu với chỉ mục Văn bản của Oracle

  2. Không thể nhấn proc được lưu trữ oracle bằng mẫu kho lưu trữ Core .Net EF (2.2)

  3. Làm thế nào để lấy ngày có hiệu lực hiện tại trong Oracle?

  4. Kết hợp dữ liệu từ 5 bảng mà không có giá trị trùng lặp và nhận kết quả với trạng thái tùy chỉnh trong Oracle 10g

  5. ORA-00904 Số nhận dạng không hợp lệ ”cho một số nhận dạng trong một nhóm theo mệnh đề