Postgresql-13
如何更新 jsonb 欄位的屬性值?
我有一個名為 attr 欄位的 jsonb 類型,其中包含以下內容:
{ "pid": 1, "name": "john", "is_default": true }
如何將 is_default 更改為 false?
我嘗試在下面執行,但沒有運氣。
update attr set attr ->> 'is_default' = false where sales_type = 2
有兩種方法可以做到這一點:
簡單地連接新的鍵/值對:
update the_table set attr = attr || '{"is_default": false}';
這是有效的,因為當連接兩個
jsonb
值時,現有的鍵將被覆蓋。另一種方法是使用
jsonb_set()
它更新通過“路徑”指定的位置的值(通過數組的元素定義)update the_table set attr = jsonb_set(attr, array['is_default'], to_jsonb(false));
使用即將發布的第 14 版(將於 2021 年第四季度發布),您將能夠將其簡化為:
update the_table set attr['is_default'] = to_jsonb(false);