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

MySQL 5.7.12中使用JSON_EXTRACT求和返回0的问题求助

JSON字段中value值求和返回0的解决方法

你的问题出在直接对JSON路径返回的数组字符串求和,PostgreSQL无法识别这个字符串为有效数值,所以sum结果为0。

你的JSON字段结构:

{"damage_budget": [{"id": 1, "name": "test-one", "value": 131, "quantity": 1}, {"id": 10, "name": "test-two", "value": 460, "quantity": 1}]}

错误的查询语句:

select id, sum(column ->>'$.damage_budget[*].value') from table

正确的解决方式

需要先把JSON数组展开为单独的行,再提取每个元素的value并转成数值类型后求和:

select id, sum((elem->>'value')::numeric) 
from your_table, jsonb_array_elements(your_json_column::jsonb->'damage_budget') as elem
group by id;

原因说明

->>'$.damage_budget[*].value'返回的是一个包含多个value的字符串数组(比如["131","460"]),sum函数无法将这个字符串解析为可累加的数值,因此返回0。而通过jsonb_array_elements展开数组后,每个元素的value被单独提取并转为数值,sum就能正确计算总和(131+460=591)。

内容的提问来源于stack exchange,提问作者Luis Felipe de Almeida Caiaffa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:25:21