mysql - 如何在 MySQL 的 ExtractValue 中使用 XPath `(//path)[n]` 语法
问题描述
我正在尝试使用 MySQL (5.7) 获取出现在 XML 结构的任何部分的指定标记的第二个实例的值。
一个示例 XML 提取是:
SET @xml = '
<root>
<lang>English</lang>
<lang>French</lang>
<section>
<lang>German</lang>
<lang>Bulgarian</lang>
</section>
</root>
';
我通常会使用 XPath (//lang)[2]
,在这种情况下应该获得“法语”,但这在 MySQL 中不起作用:
SELECT ExtractValue(@xml, '(//lang)[2]');
-- Result should be: "French"
-- but server response is instead:
-- "#1105 - XPATH syntax error: '[2]'"
类似的语法,这不是我们想要的,可以编译,但显然会产生不想要的结果:
SELECT ExtractValue(@xml, '//lang[2]');
-- Result, which is not what is wanted, is: "French Bulgarian"
请注意,该值可能出现在结构中的任何位置。我试图在任何地方找到例如第二个实例。
MySQL真的支持(//path)[n]
语法吗?我相信这是 MySQL 应该支持的 XPath 1.0。
解决方案
推荐阅读
- php - 每次刷新页面时,都会发送一封电子邮件
- sql - 根据联接表中的最新日期获取结果
- routes - Nuxt:使用组件作为链接
- python - 将字符串和列表都传递给 pandas .isin 方法
- python - Python不按顺序打印消息
- python-3.x - Python 调用 Cython 函数导致核心转储
- ffmpeg - 使用 ffmpeg 创建 Zoom 虚拟背景视频
- html - 为什么我的图像不透明,我怎样才能做到这一点?
- jupyter-notebook - 在线 Jupyter Notebook 演示是否有限制?
- haskell - 如果启用了 OverloadedStrings 扩展,则函数长度“a”不会编译