Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Abrufen von XML-Elementen aus XMLType Oracle

Sie können die Kombination von existsNode verwenden und extract funktioniert wie folgt.

SELECT b.SOFT_ATTRIBUTES,
  CASE
    WHEN existsNode (a.soft_attributes ,'/*/'
      ||b.SOFT_ATTRIBUTES) = 1
    THEN a.soft_attributes.extract('/*/'
      ||b.SOFT_ATTRIBUTES
      ||'/text()').getStringVal()
  END value
FROM xml_analysis a,
  xml_softattributes b
WHERE a.id = b.id;

* wird als Platzhalter verwendet, um einen beliebigen untergeordneten Knoten abzugleichen. Beispielsweise entspricht /PO/*/STREET jedem Straßenelement, das ein untergeordnetes Element des PO-Elements ist.

Ausgabe:

attr1   ABC
attr2   XYZ
attr3   PQR