弹出MySQL 5.7中JSON数组中的最后一项

时间:2016-07-18 18:08:09

标签: mysql mysql-json

我在一个名为from的字段中有一系列日期。它看起来像这样。

['2016-05-01', '2016-05-03', '2016-05-04']

我想 SELECT 最后一项(这里是2016-05-04)。

我试过这个:

SELECT `from`->"$[JSON_LENGTH(`from`) - 1]" FROM `table` WHERE `id` = 3;

但得到了这个错误:

ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 2.

我尝试过使用这样的变量:

SET @count = (SELECT JSON_LENGTH(`from`) - 1 FROM `table` WHERE `id` = 3);
SELECT `from`->"$[@count]" FROM `table` WHERE `id` = 3;

但得到完全相同的错误。但如果我这样做:

SELECT `from`->"$[2]" FROM `table` WHERE `idx` = 3;

工作正常。

1 个答案:

答案 0 :(得分:0)

你可以使用:

SELECT JSON_EXTRACT(`from`,CONCAT("$[",JSON_LENGTH(`from`)-1,"]"))      FROM `table`;

获取json数组中的最后一项。