假设我有一个名为 "xml" 的表,其中在单个列 "data" 中存储了 XML 文件。如何编写 MySQL 查询以运行 XPath 并仅返回与该 XPath 匹配的行?
SELECT * FROM xml
WHERE EXTRACTVALUE(data, '<xpath-expr>') != '';
但是需要注意的是,MySQL对XPath的支持存在一定的限制。
EXTRACTVALUE()
仅返回CDATA。我刚从同事那里得到了答案,似乎经常修剪XML会有所帮助:
select * from xml where
trim(both '\r\n' from ExtractValue(xml, '/some/xpath')) = 'value';