Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Замена в jsonb значения


Автор: polin11 12.6.2022, 13:26


Использую POSTGRESQL, есть таблица с полем jsonb
Код

select *
from 
(
values
(1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
(2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
(3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
) as q (id, data)


https://www.db-fiddle.com/f/dMK5uHZ8Thxnk57hi7f4wN/0

Нужно в массиве по ключу 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)


Просьба помочь написать запрос

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)