簡體   English   中英

POSTGRES JSON:更新列中的數組值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM