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

PostgreSQL含空格JSONB键无法更新的问题求助

解决PostgreSQL JSONB带空格/特殊字符键的更新问题

问题原因

直接用字符串拼接JSONB的方式失败,大概率是因为字符串里的特殊字符(比如RAZÃO SOCIAL中的重音符号、空格)在JSON解析时出现编码匹配问题,导致PostgreSQL无法正确识别目标键。用%20替换空格是错误操作——JSON不使用URL编码,空格直接保留即可。

可行解决方案

方案1:使用jsonb_set精准更新

jsonb_set支持通过数组形式指定键路径,能完美处理带空格、特殊字符的键,还可单独更新单个键:

-- 更新单个带空格的键
UPDATE forms
SET data = jsonb_set(
    data,
    array['RAZÃO SOCIAL'],  -- 用数组指定键名,支持空格/特殊字符
    '"aaaA"'::jsonb
)
WHERE id = 10;

如果要同时更新多个键,可以嵌套jsonb_set:

-- 同时更新多个键(含带空格的键)
UPDATE forms
SET data = jsonb_set(
    jsonb_set(data, array['RAZÃO SOCIAL'], '"aaaA"'::jsonb),
    array['SIGLA'],
    '"ASCOM SOUREEEE"'::jsonb
)
WHERE id = 10;

方案2:使用jsonb_build_object构建JSONB后合并

jsonb_build_object会直接构造合法的JSONB对象,无需手动拼接字符串,能自动处理特殊字符:

UPDATE forms
SET data = data || jsonb_build_object('RAZÃO SOCIAL', 'aaaA', 'SIGLA', 'ASCOM SOUREEEE')
WHERE id = 10;

这个方法和你原本的思路类似,但绕过了手动JSON字符串解析的坑,更稳定可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:48:58