За последние 24 часа нас посетили 17526 программистов и 991 робот. Сейчас ищут 425 программистов ...

Замена в jsonb значения

Тема в разделе "PostgreSQL", создана пользователем polin11, 12 июн 2022.

  1. polin11

    polin11 Активный пользователь

    С нами с:
    22 янв 2019
    Сообщения:
    20
    Симпатии:
    0
    Использую POSTGRESQL, есть таблица с полем jsonb
    Код (Text):
    1. select *
    2. from
    3. (
    4. values
    5. (1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
    6. (2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
    7. (3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
    8. ) as q (id, data)
    https://www.db-fiddle.com/f/dMK5uHZ8Thxnk57hi7f4wN/0

    Нужно в массиве по ключу name заменить Иванов на Петров, в итоге, чтобы
    Код (Text):
    1. 1    {"name":["Петров","Сидоров"],"town":"Paris"}
    2. 2    {"name":["Петров","Сергеев"],"town":"Berlin"}
    3. 3    {"name":["Марков"],"town":"Rome"}
    Моих знаний хватило только, для разбиения на массив фамилий и ид. записей
    Код (Text):
    1. select id, jsonb_array_elements(data->'name')
    2. from
    3. (
    4. values
    5. (1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
    6. (2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
    7. (3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
    8. ) as q (id, data)
    Просьба помочь написать запрос