あなたは行うことができないとjson
だけでjsonb
それは'{logo,url}'
になりので、あなたは、あなたが変更したいオブジェクトへのパスを提供する必要がありjsonb_set
で
(しかし、あなたは簡単に既存の値をキャストすることができます) :
次
with t (data) as (
values
('{
"logo": { "url": "https://foo.bar", "something" : "some value"},
"other" : { "one": "two"}
}'::jsonb
)
)
select jsonb_set(data, '{logo,url}', to_jsonb('http://bar.foo'::text))
from t;
(WITH
部分がダミーデータを生成するためにのみ存在する)の
リターン:
jsonb_set
---------------------------------------------------------------------------------------
{"logo": {"url": "http://bar.foo", "something": "some value"}, "other": {"one": "two"}}
あなたが見ることができるように、唯一のurl
属性が置き換えられた、他のすべてがそのまま残されています。あなたの列が本当にJSONであれば
、ちょうどあなたが使用できるようにyour_column::jsonb
を使用jsonb_set()