如何使用MySQL SELECT语句统计JSON字段内数组的元素个数?
MySQL统计JSON字段内数组元素个数的方案
直接使用MySQL原生JSON_LENGTH()函数即可,该函数可统计指定JSON路径下节点的长度,针对数组类型节点的返回值就是数组元素总数。
针对你给出的样例场景,要统计items数组的元素个数,执行如下查询即可返回预期结果2:
SELECT JSON_LENGTH(json, '$.items') AS item_count FROM sample WHERE id = 1;
其他用法说明
- 如果你已经通过
JSON_EXTRACT()提取到了目标数组内容,可以直接将提取结果传入JSON_LENGTH()做统计,写法如下,执行效果和上述语句完全一致:
SELECT JSON_LENGTH(JSON_EXTRACT(json, '$.items')) AS item_count FROM sample WHERE id = 1;
JSON_LENGTH()返回值规则:- 路径对应值为数组:返回数组元素总个数
- 路径对应值为JSON对象:返回对象包含的键值对总数
- 路径对应值为标量(字符串、数字、布尔值等):返回1
- 指定路径无对应值:返回
NULL
- 适用版本:MySQL 5.7及以上支持原生JSON类型的版本均可直接使用,无需额外安装扩展。
内容的提问来源于stack exchange,提问作者saburouta
相关产品推荐
相关产品推荐

