En Postgres 9.5+ puede fusionar JSONB así:
select json1 || json2;
O, si es JSON, forzar a JSONB si es necesario:
select json1::jsonb || json2::jsonb;
O:
select COALESCE(json1::jsonb||json2::jsonb, json1::jsonb, json2::jsonb);
(De lo contrario, cualquier valor nulo en json1
o json2
devuelve una fila vacía)
Por ejemplo:
select data || '{"foo":"bar"}'::jsonb from photos limit 1;
?column?
----------------------------------------------------------------------
{"foo": "bar", "preview_url": "https://unsplash.it/500/720/123"}
Felicitaciones a @MattZukowski por señalar esto en un comentario.