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

Phân tích cú pháp xmltype thành bảng sau khi xoay xml

Bạn có thể nhận giá trị quốc gia với biểu thức XPath này:

/PivotSet/item/column[@name="country"]

Và một cái tương tự cho dân số. Trao tặng:

with x as (
  select xmltype ( 
'<PivotSet>
<item>
        <column name = "country">Ukraine</column>
        <column name = "population">12345</column>
    </item>
    <item>
        <column name = "country">Germany</column>
        <column name = "population">67891</column>
    </item>
</PivotSet>' 
) x from dual
)
select xt.* from x, xmltable (
  '/PivotSet/item'
  passing x.x 
  columns 
    country varchar2(100) 
      path 'column[@name="country"]',
    population int
      path 'column[@name="population"]'
) xt

COUNTRY   POPULATION   
Ukraine        12345         
Germany        67891     

Nhưng nếu bạn muốn một cột cho mỗi quốc gia, từ đây bạn vẫn cần phải pivot dữ liệu để có được kết quả!

Điều nào đặt ra câu hỏi:

Tại sao lại sử dụng trục XML?

Nếu đó là vì bạn không biết tên quốc gia và đang làm những việc như:

pivot xml ( 
  min ( population ) 
    for country in ( any ) 
)

Điều này đã không giúp bạn bất cứ điều gì! Bạn vẫn cần biết tên quốc gia để lấy đầu ra dưới dạng cột.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL tạo đầu ra ngẫu nhiên với các thẻ danh sách

  2. Làm thế nào để tránh các giá trị 0 bằng cách sử dụng hàm MIN và MAX trong SQL?

  3. Làm thế nào để biết một hàng sẽ đi vào phân vùng nào, với một giá trị khóa phân vùng đã biết trong Oracle?

  4. sử dụng tính năng bộ nhớ đệm ẩn của trình điều khiển JDBC của Oracle

  5. tính toán giờ dựa trên giờ làm việc trong Oracle SQL