You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MySQL的JSON_EXTRACT提取JSON数组指定索引区间的值

提取MySQL JSON数组指定索引范围的元素

MySQL的JSON_EXTRACT不支持$[1]..$[3]这种范围路径语法,你可以通过以下两种方式实现需求:

方法1:显式指定多个索引

直接在JSON_EXTRACT的路径参数里列出目标索引,用逗号分隔:

SELECT JSON_EXTRACT('[10, 20, 30, 40,50, 60]', '$[1]', '$[2]', '$[3]');

执行后会返回[20, 30, 40],正好是原数组索引1到3的元素。

方法2:使用JSON_TABLE(MySQL 8.0及以上版本)

如果数组长度不固定,或者需要更灵活的范围筛选,可以用JSON_TABLE将JSON数组转换为关系型表结构,再通过条件筛选目标行:

提取为逗号分隔的字符串

SELECT GROUP_CONCAT(value SEPARATOR ', ') AS result
FROM JSON_TABLE(
    '[10, 20, 30, 40,50, 60]',
    '$[*]' COLUMNS (
        idx FOR ORDINALITY,
        value INT PATH '$'
    )
) AS jt
WHERE idx BETWEEN 2 AND 4;

返回结果:20, 30, 40

提取为JSON数组格式

如果需要保持JSON数组的格式,用JSON_ARRAYAGG聚合结果:

SELECT JSON_ARRAYAGG(value) AS result
FROM JSON_TABLE(
    '[10, 20, 30, 40,50, 60]',
    '$[*]' COLUMNS (
        idx FOR ORDINALITY,
        value INT PATH '$'
    )
) AS jt
WHERE idx BETWEEN 2 AND 4;

返回结果:[20, 30, 40]

注意:FOR ORDINALITY生成的索引从1开始,所以对应原JSON数组的索引1到3,需要筛选idx BETWEEN 2 AND 4。

内容的提问来源于stack exchange,提问作者AKA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:45:48