Postgres 9.5以降では、次のようにJSONBをマージできます。
select json1 || json2;
または、JSONの場合は、必要に応じてJSONBに強制します。
select json1::jsonb || json2::jsonb;
または:
select COALESCE(json1::jsonb||json2::jsonb, json1::jsonb, json2::jsonb);
(それ以外の場合、json1
のnull値 またはjson2
空の行を返します)
例:
select data || '{"foo":"bar"}'::jsonb from photos limit 1;
?column?
----------------------------------------------------------------------
{"foo": "bar", "preview_url": "https://unsplash.it/500/720/123"}
コメントでこれを指摘してくれた@MattZukowskiに感謝します。