Oracle
 sql >> Base de données >  >> RDS >> Oracle

Récupération d'éléments XML à partir de XMLType Oracle

Vous pouvez utiliser la combinaison de existsNode et extract fonctionne comme suit.

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;

* est utilisé comme caractère générique pour correspondre à n'importe quel nœud enfant. Par exemple, /PO/*/STREET correspond à tout élément street qui est un petit-enfant de l'élément PO.

Sortie :

attr1   ABC
attr2   XYZ
attr3   PQR