如何在MySQL select语句中使用XPATH?

6

假设我有一个名为 "xml" 的表,其中在单个列 "data" 中存储了 XML 文件。如何编写 MySQL 查询以运行 XPath 并仅返回与该 XPath 匹配的行?

2个回答

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

但是需要注意的是,MySQL对XPath的支持存在一定的限制。

  • EXTRACTVALUE()仅返回CDATA。
  • 并非所有的XPath构造都被支持。详见文档中“XPath limitations”一节,该文档位于abatishchev回答提到的页面下。

0

我刚从同事那里得到了答案,似乎经常修剪XML会有所帮助:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接