PostgreSQL使用jsonb_set更新嵌套jsonb字段报错找不到匹配函数
错误原因
jsonb_set 函数的第三个入参要求为 jsonb 类型,你直接传入了整数类型的 21,PostgreSQL 无法匹配到对应参数类型的函数实现,因此抛出类型不匹配错误。
你参考的官方示例中第三个参数传入的是符合JSON格式的字符串,PostgreSQL会自动完成隐式类型转换,所以可以正常执行。
修复方案
可以任选以下一种写法调整更新语句:
- 使用
to_jsonb函数将整数转换为jsonb类型
update api set jdoc = jsonb_set(jdoc, '{members,coach,id}', to_jsonb(21)) where id = 22;
- 将数值写为JSON格式字符串后显式强转为
jsonb类型
update api set jdoc = jsonb_set(jdoc, '{members,coach,id}', '21'::jsonb) where id = 22;
内容的提问来源于stack exchange,提问作者jian
相关产品推荐
相关产品推荐

