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

MySQL JSON类型字段如何获取数组中大于指定值的部分元素?

在MySQL 8中筛选JSON数组里大于指定值的元素

针对你提到的场景,确实可以通过MySQL 8.0提供的JSON函数组合实现需求,核心思路是先将JSON数组拆分为行数据,筛选后再重新聚合成JSON数组,具体实现如下:

  1. 用JSON_TABLE函数把JSON数组转换为关系型表结构,将数组中的每个元素拆成单独的行
  2. 通过WHERE子句筛选出大于2的元素
  3. 借助JSON_ARRAYAGG函数将筛选后的元素重新组合成JSON数组

对应的基础查询语句:

SELECT JSON_ARRAYAGG(value) AS filtered_array
FROM Jtest,
     JSON_TABLE(jscol, '$[*]' COLUMNS(value INT PATH '$')) AS jt
WHERE value > 2;

如果表中有多条记录(比如存在主键id区分不同行),需要按记录分组处理每个数组,可调整语句为:

SELECT id, JSON_ARRAYAGG(value) AS filtered_array
FROM Jtest,
     JSON_TABLE(jscol, '$[*]' COLUMNS(value INT PATH '$')) AS jt
WHERE value > 2
GROUP BY id;

补充说明:

  • JSON_TABLE是MySQL 8.0新增函数,专门用于将JSON数据转换为关系型表,方便用传统SQL做筛选操作
  • JSON_ARRAYAGG负责将多行数据聚合为单个JSON数组,匹配最终输出JSON格式的需求

内容的提问来源于stack exchange,提问作者kw.h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:12:05