Oracle
 sql >> Baza danych >  >> RDS >> Oracle

XML Oracle:wyciąg z wielu węzłów podrzędnych

Możesz osiągnąć pożądany rezultat używając XMLTable() funkcja:

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)

Wynik:Pokaz SQLFiddle

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 

Dowiedz się więcej o XMLTable() funkcja.

Uwaga :Pracując z wersjami Oracle przed 11.2.0.2, możesz napotkać błąd ORA-1780 error (błąd 8545377) w niektórych typach zapytań XML, gdy cursor_sharing parametr jest ustawiony na FORCE lub SIMILAR (przestarzałe począwszy od 11.2). Ustawianie cursor_sharing parametr do EXACT (wartość domyślna), rozwiąże problem.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-02019:nie znaleziono opisu połączenia do zdalnej bazy danych

  2. Leniwa ocena instrukcji Oracle PL/SQL w klauzulach SELECT zapytań SQL

  3. HikariCP 1.4.0 MBean InstanceNotFoundException

  4. Konwertuj datę ciągu na datę i godzinę w Oracle

  5. Oracle:Concat z ogranicznikiem, ale tylko wtedy, gdy oba operandy NIE są NULL