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

PostgreSQL中jsonb字段用jsonb_set更新null值行无效果如何解决

PostgreSQL jsonb字段空值更新失效问题解决

根因分析

jsonb_set 函数的第一个入参(待操作的jsonb对象)为null时,函数返回结果直接为null,因此更新后目标字段仍保持原值,不会产生预期的写入效果,这就是字段为null的行执行命令不生效的原因。

通用解决方案

使用coalesce函数对空值做兼容处理,当字段为null时先初始化为空jsonb对象,再执行更新操作,该写法对字段已存在数据、字段为null的场景都生效:

UPDATE "MddPublisher" SET "CountriesAndGamesAppStore" = jsonb_set(
  coalesce("CountriesAndGamesAppStore", '{}'::jsonb),
  '{"AX"}',
  '["test"]'
);

可选优化:仅更新空值行

如果需求是仅给字段为null的行初始化AX对应的配置,可以加WHERE条件缩小更新范围,避免全表扫描提升执行效率:

UPDATE "MddPublisher" 
SET "CountriesAndGamesAppStore" = '{"AX": ["test"]}'::jsonb
WHERE "CountriesAndGamesAppStore" IS NULL;

注意事项

'{}'::jsonb的显式类型转换不可省略,否则PostgreSQL会将空对象识别为普通字符串,触发类型不匹配报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:57:03