POSTGRES JSON:正在更新列中的数组值



我使用的是POSTGRES SQL JSON。

在json列中,值存储为数组,我想使用SQL查询更新该数组

{"roles": ["Admin"]}

表列中的输出应为

{"roles": ["SYSTEM_ADMINISTRATOR"]}

我尝试了不同的查询,但不起作用。

UPDATE public.bo_user
SET json = jsonb_set(json, '{roles}', to_jsonb('SYSTEM_ADMINISTRATOR')::jsonb, true);

UPDATE public.bo_user
SET json = jsonb_set(json, '{roles}', to_jsonb('["SYSTEM_ADMINISTRATOR"]')::jsonb, true);

ERROR:  could not determine polymorphic type because input has type unknown
SQL state: 42804

请帮我查询

,但目前要更新0索引处的值

这可以使用基于索引的";路径";对于jsonb_set()

update bo_user
set "json" = jsonb_set("json", '{roles,0}'::text[], '"SYSTEM_ADMINISTRATOR"')
where "json" #>> '{roles,0}' = 'Admin'

";路径";'{roles,0}'引用数组中的第一个元素,该元素被常量"SYSTEM_ADMINISTRATOR"'替换。注意SQL字符串文字中的双引号是有效JSON字符串所必需的

WHERE子句确保您不会意外更改错误的值。

所以这是有效的。

UPDATE public.bo_user
SET json = jsonb_set(json, '{roles}', ('["SYSTEM_ADMINISTRATOR"]')::jsonb, true)
where id = '??';

相关内容

  • 没有找到相关文章

最新更新