0
我有一個json列。該對象具有嵌套字段,例如Postgres 9.5更新內部json字段
{
"logo": {
"url": "https://foo.bar"
...
}
...
}
對象具有更多的字段,但url
場就是我要更新的一個。我相信我應該使用json_set之類的東西,但我對json路徑感到迷茫。我能舉一個例子嗎?
我有一個json列。該對象具有嵌套字段,例如Postgres 9.5更新內部json字段
{
"logo": {
"url": "https://foo.bar"
...
}
...
}
對象具有更多的字段,但url
場就是我要更新的一個。我相信我應該使用json_set之類的東西,但我對json路徑感到迷茫。我能舉一個例子嗎?
你不能做到這一點與json
只有jsonb
(但你可以輕鬆地投現有的值)
隨着jsonb_set
您需要提供的路徑,你要更改的對象,所以這將是'{logo,url}'
:
以下:
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()