Mysql – How to use XPATH in MySQL select

mysqlsqlxpath

Say I have a table called "xml" that stores XML files in a single column "data". How would I write a MySQL query that run an XPath and return only rows matching that XPath?

Best Solution

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

You should note, however, that there are limitations to MySQL's support of XPath.

  • EXTRACTVALUE() returns only CDATA.
  • Not all XPath constructions are supported. Details under the heading "XPath limitations" on the doc page mentioned in abatishchev's answer.