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

Анализирайте xmltype в таблица след осевия xml

Можете да получите стойността на страната с този XPath израз:

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

И подобен за населението. Давам:

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     

Но ако искате колона за всяка държава, оттук все още трябва да pivot данните, за да получите резултата!

Което повдига въпроса:

Защо да използвате XML пивот?

Ако е защото не знаете имената на държавите и правите нещо като:

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

Това не ви е спестило нищо! Все още трябва да знаете имената на държавите, за да получите изхода като колони.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INSERT с ORDER на Oracle

  2. Задействане за показване на съобщение чрез PL/SQL

  3. Базиран на курсора тип данни на запис с курсор, връщащ множество стойности в базата данни на Oracle

  4. Как да споделяте данни в една организация

  5. Кой OJDBC драйвер за Java 6?