sql - 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
解决方案
这是一个更正:
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