5

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

4

2 回答 2

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

但是,您应该注意,MySQL 对 XPath 的支持是有限制的。

  • EXTRACTVALUE()仅返回 CDATA。
  • 并非所有 XPath 结构都受支持。abatishchev 的回答中提到的文档页面上“XPath 限制”标题下的详细信息。
于 2008-12-08T17:04:35.470 回答
0

我刚从一位同事那里得到答案,似乎修剪 xml 经常有帮助:

select * from xml where 
   trim(both '\r\n' from ExtractValue(xml, '/some/xpath')) = 'value';
于 2008-12-08T17:21:28.293 回答