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

如何通过PostgreSQL查询更新JSON数组中指定实体的email字段?

可以通过PostgreSQL查询实现此操作

针对你的需求,我们可以利用PostgreSQL的JSON函数拆分、处理并重新聚合JSON数组,完成对指定字段的修改。以下是具体的更新语句:

UPDATE workflows_emails
SET "to" = (
  SELECT json_agg(
    CASE
      -- 匹配type为external的对象,修改email字段
      WHEN obj->>'type' = 'external' AND obj->>'email' IS NOT NULL
      THEN obj || json_build_object('email', (obj->>'email') || '.SBX')
      -- 其他类型的对象保持原样
      ELSE obj
    END
  )
  FROM json_array_elements("to") AS obj
);

语句说明:

  • json_array_elements("to"):将to列的JSON数组拆分为单个JSON对象,逐个处理
  • CASE条件判断:检查对象的type是否为external,同时确保email字段存在(避免出现null.SBX的无效值)
  • obj || json_build_object(...):用新的email值覆盖原对象中的email字段(PostgreSQL中||运算符可用于合并JSON对象)
  • json_agg(...):将处理后的单个JSON对象重新聚合成数组,替换原to列的值

注意:因为to是PostgreSQL的关键字,所以必须用双引号"to"引用该列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:42:02