如何在 MySQL 的 JSON 路径中使用 CONCAT ?



MySQL 版本 5.7

鉴于 h.ent_rollup长度始终为>=4,并且我想获取仅包含一个数组的 JSON 数据字段中倒数第二个数组元素:

ent_rollup的示例 JSON 值:

["15","26","57","28","89","10","11","12"]

示例:我想要这个

SELECT h.`ent_rollup`->>CONCAT('"$[',(JSON_LENGTH(h.`ent_rollup`))-2,']"') FROM hierarchy h

翻译成这个

SELECT h.`ent_rollup`->>"$[6]" FROM hierarchy h

我想找回11,但收到此错误:

Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 'concat('"$[', 
(json_length(h.`ent_rollup`))-2,']"') from hierarchy h
where h.`en' at line 1

当你使用->>时,路径必须是文字表达式(尽管文档没有明确说明(。如果要计算路径,请使用JSON_EXTRACT()函数。

路径中还有额外的"字符,这会导致 MySQL 失败(当我尝试使用它时 rextester.com 它会在等待响应时超时(。

SELECT JSON_UNQUOTE(JSON_EXTRACT(h.ent_rollup, CONCAT('$[',JSON_LENGTH(h.ent_rollup)-2,']'))) 
FROM hierarchy h;

相关内容

  • 没有找到相关文章

最新更新