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
答案 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;