@The_Pro_Killer

Как изменить значение в JSONB?

У меня есть таблица, в которой есть поле data, которое имеет JSONB формат. В этом поле такая структура:
{"requisites":
{"kpp": "212997417444",
"ogrn":
{"number": "219322571340"}}
Мне нужно поменять значение для поля kpp. Я пытаюсь сделать это так:
update 'имя таблицы' set data = jsonb_set(data, '{requisites}', '{"kpp": 777}') where 'что-то';
Но при этом все остальное (например, ogrn) просто стирается, а мне надо это сохранить и изменить только kpp. Подскажите, пожалуйста, что я делаю не так? Заранее спасибо!
  • Вопрос задан
  • 776 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
set data = jsonb_set(data, '{requisites,kpp}', '777')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Надо указывать полный путь.
select jsonb_value,
       jsonb_set(jsonb_value, '{requisites,kpp}', '"777"', false)
FROM test;

https://dbfiddle.uk/?rdbms=postgres_12&fiddle=3cfb...

PS. Вообще менять строковый атрибут на числовой - штука небезопасная. В приложении это может аукнуться - оно-то не в курсе...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы