sql >> Databasteknik >  >> RDS >> Oracle

XML Oracle:Extrakt av flera underordnade noder

Du kan uppnå önskat resultat genom att använda XMLTable() funktion:

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)

Resultat: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 

Läs mer om XMLTable() funktion.

Obs :När du arbetar med Oracle-versioner före 11.2.0.2 kan du stöta på ORA-1780 error (bugg 8545377) på vissa typer av XML-frågor när cursor_sharing parametern är inställd på FORCE eller SIMILAR (fasad från och med 11.2). Ställa in cursor_sharing parameter till EXACT (standardvärde), kommer att lösa problemet.




  1. Hur man hittar saknat värde mellan två Mysql-tabeller

  2. höger sammanfogning kontra vänster sammanfogning

  3. Hur man gör genomsnittliga produktrecensioner med activerecord och POSTGRES

  4. Hur uppskattar jag SQL-frågetiming?