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

时间:2018-08-27 16:03:29

标签: mysql arrays json path

MySQL 5.7版

考虑到h。1的长度始终> = 4,我想在仅包含单个数组的JSON数据字段中获取倒数第二个数组元素:

ent_rollup的示例JSON值:

ent_rollup

示例:我想要这个

["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

1 个答案:

答案 0 :(得分:0)

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

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

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