Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Recuperando elementos XML do XMLType Oracle


Você pode usar a combinação de existsNode e extract funciona da seguinte forma.
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;

* é usado como um curinga para corresponder a qualquer nó filho. Por exemplo, /PO/*/STREET corresponde a qualquer elemento street que seja neto do elemento PO.

Resultado:
attr1   ABC
attr2   XYZ
attr3   PQR