gpt4 book ai didi

mysql - 使用动态 XPATH 在 MySql 中提取 XML

转载 作者:行者123 更新时间:2023-11-30 22:07:02 25 4
gpt4 key购买 nike

我在遗留数据库中有两个表。其中之一包含一个包含一些 xml 的字段。另一个表包含构成 xml 的标记。

例如,考虑一个包含语言列表(例如 enfrit)的表和一个包含如下字段的表

<en>Something</en><fr>Quelque chose</fr><it>Qualcosa</it>

我想提取所有的翻译。我有一个类似的查询

SELECT GROUP_CONCAT(extractvalue(table.field, languages.sigla))
FROM table, languages
GROUP BY table.id

但是我得到以下错误

[HY000][1105] Only constant XPATH queries are supported

我想这是 MySql 的限制(我使用的是 5.6 版)。有没有其他方法可以获得我要找的东西?

最佳答案

我遇到了同样的问题,并在那篇博文中找到了一个简单的解决方法:http://sql-debug.blogspot.com/2012/05/extractvalue-only-constant-xpath.html

该解决方案确实令人惊讶,但尽管看起来很愚蠢,但它却完美运行...

它包括创建一个仅“包装”ExtractValue 函数的函数,以便将 xpath 作为已生成的字符串提供给它。

delimiter ##
create function exv(xml text, xpath text) returns text charset utf8
begin
return cast(extractvalue(xml, xpath) as char);
end ##
delimiter ;

然后,当您遇到此 [HY000][1105] 错误时,只需将您尝试运行的查询中的 extractvalue 替换为 exv

当然,这个变通办法有性能成本...

关于mysql - 使用动态 XPATH 在 MySql 中提取 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41363809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com