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

标签 mysql arrays 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;

它工作正常。

最佳答案

你可以使用:

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

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

关于mysql - 在 MySQL 5.7 中弹出 JSON 数组中的最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38443307/

相关文章:

php - SQL查询根据某列值获取所有记录

PHP/MYSQL 查询如果不在第二个表中

mysql - 在 MySQL 中查询带有对象数组的 JSON 列

mysql - 我的触发器插入了许多记录

PHP 有什么比curl 更快的方法来检查远程图像文件大小大约3000 倍?

c++ - Qt 5.3 : Accessing/returning/calling checkboxes that are created dynamically(? )

ios - Swift:从接口(interface)类型数组转换为对象数组崩溃

c - 打印二维数组

mysql - 在 JSON 与 MYSQL 行中存储数据

Mysql:使用来自不同表/列的值更新 json 列