首页 > 解决方案 > Postgres sql jsonb_set() 无法正常工作

问题描述

我正在尝试更新 jsonb 值。请告诉我我做错了什么。在这里,我有一个表,其中有一个带有 jsonb 数据类型的配置文件列。

UPDATE <TABLE NAME> SET
"profile" = jsonb_set('{"lastName": "dada"}'::jsonb, '{lastName}'::text[] , concat('"', (profile->'lastName'), '"')::jsonb, false)
where email = 'abc@example.com'

错误:函数 jsonb_set(jsonb, text[], jsonb, boolean) 不存在 LINE 2: "profile" = jsonb_set('{"lastName": "dada"}'::jsonb, '{lastN... ^ HINT :没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。SQL 状态:42883 字符:44

标签: sqlpostgresqljsonb

解决方案


这是一个更正:

UPDATE <TABLE NAME> SET
profile = jsonb_set('{"lastName": "dada"}'::jsonb, '{lastName}'::text[] , 
                      (profile->'lastName')::jsonb, false)
where email = 'abc@example.com'

错误在这里:concat('"', (profile->'lastName'), '"')::jsonb

不过请注意,这只是将 lastname 字段设置回 sam lastname 值:-)

最好的问候,
Bjarni


推荐阅读