2008-12-08 9 views
4

Dites que j'ai une table appelée "xml" qui stocke les fichiers XML dans une seule colonne "données". Comment est-ce que j'écrirais une requête MySQL qui exécuterait un XPath et retournerait seulement des lignes correspondant à ce XPath?Comment utiliser XPATH dans MySQL select?

Répondre

7
SELECT * FROM xml 
WHERE EXTRACTVALUE(data, '<xpath-expr>') != ''; 

Vous devez noter, cependant, que la prise en charge de XPath par MySQL est limitée.

  • EXTRACTVALUE() renvoie uniquement CDATA.
  • Toutes les constructions XPath ne sont pas supportées. Détails sous la rubrique "limitations XPath" sur le doc page mentionné dans la réponse de abatishchev.
0

Je viens de recevoir la réponse d'un collègue, il semble rogner le xml aide souvent:

select * from xml where 
    trim(both '\r\n' from ExtractValue(xml, '/some/xpath')) = 'value';