我使用的是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 = '??';