Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 24.03.2013
Сообщений: 177

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

12.06.2022, 13:08. Показов 509. Ответов 1

Студворк — интернет-сервис помощи студентам
Использую POSTGRESQL, есть таблица с полем jsonb
SQL
1
2
3
4
5
6
7
8
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/dM... 7hi7f4wN/0

Нужно в массиве по ключу name нужно заменить Иванов на Петров, в итоге, чтобы
получилось
SQL
1
2
3
1   {"name":["Петров","Сидоров"],"town":"Paris"}
2   {"name":["Петров","Сергеев"],"town":"Berlin"}
3   {"name":["Марков"],"town":"Rome"}
Моих знаний хватило только, для разбиения на массив фамилий и ид. записей

SQL
1
2
3
4
5
6
7
8
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)
Просьба помочь написать запрос
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.06.2022, 13:08
Ответы с готовыми решениями:

Поиск и замена с пропуском первой замены. Замена начиная со второго значения
Добрый день. Я прогнал mysql базу такой заменой. UPDATE post SET pagetext = CONCAT (substring(pagetext, 1,...

JSONB в C#
Доброго всем времени суток! Не могу найти ответ в интернете, поэтому надеюсь на вашу помощь. У меня есть файл json, который я хочу...

Jsonb и BETWEEN
Здравствуйте, есть такая колонка: properties {"list": , "numb": } Подскажите пожалуйста, возможен ли такой запрос: id = 5...

1
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
13.06.2022, 16:21
Должно помочь jsonb_set, в котором в параметре path нужно указать путь замены.
А вот путь приходится вычислять и перепроверять.
Должно работать примерно так

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
WITH
q(id, jdata) AS
(
VALUES
(1, '{"name":["Иванов","Сидоров"], "town":"Paris"}'::jsonb),
(2, '{"name":["Иванов","Сергеев"], "town":"Berlin"}'::jsonb),
(3, '{"name":["Марков"], "town":"Rome"}'::jsonb)
),
qi(id, jdata, path) AS
(
SELECT id, jdata,
'{name,' || (SELECT index-1 FROM jsonb_array_elements(jdata -> 'name') WITH ORDINALITY arr(item, INDEX)
WHERE item = '"Иванов"'::jsonb) || '}' AS path
FROM q
)
SELECT
id,
CASE
WHEN path IS NULL THEN jdata
ELSE jsonb_set(jdata, path::text[], '"Петров"'::jsonb)
END
FROM qi;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2022, 16:21
Помогаю со студенческими работами здесь

jsonb в столбцы
Есть таблица содержашая jsonb например : { "Doctor": , "Result": , "Hospital": , "ComplaintData": "2021-05-19"} и...

Поиск значения в ячейке таблицы и замена значения из соседней ячейки
В документе есть много таблиц. Нужно найти искомый текст в одной ячейке, а заменить текст из соседней ячейки. Макрорекордером записал...

Замена одного значения другим, в зависимости от этого значения
Добрый день) У меня есть список с текстовыми значениями val-x, и есть другой список в 2 столбца...val1 и val2 Мне нужно сделать так,...

Индексы лля jsonb
Привет! Недавно начали переход на PostgreSQL, есть неясности с индексацией поля типа jsonb. Создаю индекс для этого поля: CREATE INDEX...

Получить данные JSONB
Привет! Есть две таблицы: 1) Таблица - user_ad id | user | data Ячейка "data" имеет формат JSONB и хранит такие данные:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru