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

PostgreSQL中如何通过查询修改JSONB字段的键名?

PostgreSQL JSONB列批量修正键名(total_count改为count)

完全可以直接通过SQL查询批量修正,无需逐条取出记录更新。利用PostgreSQL自带的JSONB操作函数就能实现高效批量修改。

基础修正语句(覆盖已有count值)

如果希望当记录同时存在count和total_count时,用total_count的值覆盖原count,执行以下UPDATE语句:

UPDATE your_table
SET your_jsonb_column = your_jsonb_column || jsonb_build_object('count', your_jsonb_column->'total_count') - 'total_count'
WHERE your_jsonb_column ? 'total_count';

语句说明:

  • your_jsonb_column->'total_count':提取错误键total_count对应的值
  • jsonb_build_object('count', ...):生成包含正确键count的JSON对象
  • ||:JSONB合并操作,将新的键值对合并到原对象(已有count则被覆盖)
  • - 'total_count':从原对象中删除错误键
  • WHERE子句:仅处理包含错误键的记录,避免无效更新

保留原count值的修正语句

如果要保留原count的值(仅当记录没有count时才用total_count的值填充),可以用CASE分支处理:

UPDATE your_table
SET your_jsonb_column = CASE
    WHEN your_jsonb_column ? 'count' THEN your_jsonb_column - 'total_count'
    ELSE your_jsonb_column || jsonb_build_object('count', your_jsonb_column->'total_count') - 'total_count'
END
WHERE your_jsonb_column ? 'total_count';

执行前验证

为避免误操作,建议先通过SELECT语句预览修正结果:

SELECT
    your_jsonb_column AS original,
    your_jsonb_column || jsonb_build_object('count', your_jsonb_column->'total_count') - 'total_count' AS corrected
FROM your_table
WHERE your_jsonb_column ? 'total_count';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 03:24:57