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

PostgreSQL中JSONB数组字段更新:替换Class字段内容

PostgreSQL JSONB数组字段批量更新方案

如果你的PostgreSQL表中JSONB字段存储的是JSON对象数组(示例格式如下):

[{"DOB": "04-May-2006", "Code": "2009585", "Class" : "I - Noon"}]

需要将数组中每个对象的Class字段值里的Noon替换为NS,可以用以下SQL语句实现:

-- 替换your_table为实际表名,jsonb_column为实际JSONB字段名
UPDATE your_table
SET jsonb_column = (
  SELECT jsonb_agg(
    CASE 
      WHEN obj->>'Class' LIKE '%Noon%'
      THEN obj || jsonb_build_object('Class', replace(obj->>'Class', 'Noon', 'NS'))
      ELSE obj
    END
  )
  FROM jsonb_array_elements(jsonb_column) AS obj
)
-- 可选WHERE条件:仅更新包含目标内容的行,避免全表扫描
WHERE jsonb_column @> '[{"Class": "%Noon%"}]'::jsonb;

语句说明:

  • jsonb_array_elements(jsonb_column):将JSONB数组拆分为单个JSON对象,方便逐个处理
  • replace(obj->>'Class', 'Noon', 'NS'):对每个对象的Class字段值执行字符串替换
  • obj || jsonb_build_object(...):将替换后的Class字段合并回原对象,保留其他字段不变
  • jsonb_agg(...):将处理后的单个对象重新聚合为JSON数组,覆盖原字段值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:42:07