如何在MySQL选择中使用XPATH?

如何在MySQL选择中使用XPATH?,sql,mysql,xpath,Sql,Mysql,Xpath,假设我有一个名为“xml”的表,它将xml文件存储在一列“data”中。如何编写运行XPath并只返回与该XPath匹配的行的MySQL查询?SELECT*fromXML SELECT * FROM xml WHERE EXTRACTVALUE(data, '<xpath-expr>') != ''; 其中提取值(数据“”)!=“”; 但是,您应该注意,MySQL对XPath的支持存在局限性 EXTRACTVALUE()只返回CDATA 并非所有XPath构造都受支持。abat

假设我有一个名为“xml”的表,它将xml文件存储在一列“data”中。如何编写运行XPath并只返回与该XPath匹配的行的MySQL查询?

SELECT*fromXML
SELECT * FROM xml
WHERE EXTRACTVALUE(data, '<xpath-expr>') != '';
其中提取值(数据“”)!=“”;
但是,您应该注意,MySQL对XPath的支持存在局限性

  • EXTRACTVALUE()
    只返回CDATA
  • 并非所有XPath构造都受支持。abatishchev回答中提到的文档标题“XPath限制”下的详细信息

我刚从一位同事那里得到答案,似乎修改xml通常会有所帮助:

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