[英]How to remove a value from a postgres text column json string array?
[英]POSTGRES JSON: Updating array value in column
我正在使用 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()
基於索引的“路徑”來jsonb_set()
update bo_user
set "json" = jsonb_set("json", '{roles,0}'::text[], '"SYSTEM_ADMINISTRATOR"')
where "json" #>> '{roles,0}' = 'Admin'
"path" '{roles,0}'
引用數組中的第一個元素,並被替換為常量"SYSTEM_ADMINISTRATOR"'
注意有效 JSON 字符串所需的 SQL 字符串文字內的雙引號
WHERE 子句確保您不會意外更改錯誤的值。
所以這奏效了。
UPDATE public.bo_user
SET json = jsonb_set(json, '{roles}', ('["SYSTEM_ADMINISTRATOR"]')::jsonb, true)
where id = '??';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.