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

PostgreSQL中JSONB字段totalBaseValue数值除法更新问题求助

PostgreSQL中更新JSONB对象内数值的正确方法

你的问题出在误用了jsonb_array_elements函数——这个函数是用来解析JSON数组的,但你的dynamic_fields是单个JSON对象,自然会报错"cannot extract elements from an object"。

直接用jsonb_set就能修改对象里的指定字段,不需要拆分数组操作,正确的更新语句如下:

UPDATE property_calculation
SET dynamic_fields = jsonb_set(
    dynamic_fields,
    array['totalBaseValue'],
    to_jsonb((dynamic_fields ->> 'totalBaseValue')::numeric / 1000)
)
WHERE dynamic_fields ? 'totalBaseValue'; -- 可选:只更新包含该键的记录,避免无意义操作

关键说明:

  • dynamic_fields ->> 'totalBaseValue':取出totalBaseValue的字符串值,转成numeric类型后除以1000
  • to_jsonb(...):把计算后的数值转回JSONB格式
  • jsonb_set(目标JSONB, 键路径数组, 新值):定位到指定键并替换其值
  • 最后的WHERE条件是可选的,用来过滤掉不包含totalBaseValue的记录,提升效率

如果要先验证结果是否正确,可以先执行查询语句查看修改后的数据:

SELECT 
    id,
    jsonb_set(
        dynamic_fields,
        array['totalBaseValue'],
        to_jsonb((dynamic_fields ->> 'totalBaseValue')::numeric / 1000)
    ) AS updated_dynamic_fields
FROM property_calculation;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42