如何获取MySQL JSON数组中的最后一个元素?

时间:2017-06-07 06:14:44

标签: mysql json

我最近有时间升级到MySQL 5.7,我正在测试新的JSON functions。到目前为止,非常棒!

我有一个用例,我需要访问JSON数组中的最后一个元素。当你知道这样的序数时,很容易检索一个元素:

SELECT `json_field`->"$.my_array[0]" from `my_table` where `id` = 1;

但是如果您不知道自己拥有多少元素,那么您无法使用。现在,您可以找到(并存储)有多少这样的元素:

set @arrayLength = (SELECT JSON_LENGTH(`json_field`->"$.my_array") from `my_table` where `id` = 1);

但是当你去使用变量时,你得不到结果。

SELECT `json_field`->"$.my_array[@arrayLength - 1]" from `my_table` where `id` = 1;

有人解决过MySQL 5.7的类似问题吗?

2 个答案:

答案 0 :(得分:1)

SELECT JSON_EXTRACT(`json_field`,CONCAT("$.my_array[",JSON_LENGTH(`json_field` ->> '$.my_array')-1,"]")) from `my_table` where `id` = 1;

found here

答案 1 :(得分:1)

从 MySQL 8 开始就简单多了:

`json_field`->> '$[last]'

其他有用的例子here

注意:在 MariaDB 中不起作用