Использую POSTGRESQL, есть таблица с полем jsonb
select *
from
(
values
(1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
(2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
(3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
) as q (id, data)
Нужно в массиве по ключу name заменить Иванов на Петров, в итоге, чтобы получилось
1 {"name":["Петров","Сидоров"],"town":"Paris"}
2 {"name":["Петров","Сергеев"],"town":"Berlin"}
3 {"name":["Марков"],"town":"Rome"}
select id, jsonb_array_elements(data->'name')
from
(
values
(1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
(2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
(3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
) as q (id, data)