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

PostgreSQL使用jsonb_set更新JSON报错:无效JSON输入语法

SQL更新语句错误排查与解决

错误根源

jsonb_set函数的第三个参数必须是有效的JSON格式值。你传入的'9323fce7-416e-40be-802f-ee173f246907'是普通字符串,但JSON语法要求字符串必须用双引号包裹,PostgreSQL尝试将其解析为JSON值时,因格式不符合规则报错。

修正后的SQL语句

方式一:转义双引号

UPDATE "CET_User"
   SET "Property" = jsonb_set("Property",
                              '{"Tid"}',
                              '"9323fce7-416e-40be-802f-ee173f246907"')
 WHERE ("Property" ->> 'Tid') = '33bc69e8-0715-4b86-8611-67070c5c744d';

方式二:使用美元引号(避免转义,更清晰)

UPDATE "CET_User"
   SET "Property" = jsonb_set("Property",
                              '{"Tid"}',
                              $json$"9323fce7-416e-40be-802f-ee173f246907"$json$)
 WHERE ("Property" ->> 'Tid') = '33bc69e8-0715-4b86-8611-67070c5c744d';

补充说明

  • jsonb_set的第三个参数要求为jsonb类型,只有符合JSON语法的值才能被正确解析。给字符串加上双引号后,它才是有效的JSON字符串值。
  • 原语句中WHERE子句的- >>是笔误,应改为->>(JSON字段提取操作符)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:40:16