у меня есть таблица со столбцом JSONB, который называется columnsettings. Данные jsonb выглядят так:.
[
{
"data": "id",
"width": 25
},
{
"data": "field_1",
"width": 125
},
{
"data": "field_3",
"width": 183
},
{
"data": "field_11",
"width": 125
}
]
Теперь я хочу запустить обновление для всех строк в таблице и изменить атрибут данных = 'newvalue', где значение данных = 'field_1, например: ожидаемый результат для всех строк будет:
[
{
"data": "id",
"width": 25
},
{
"data": "newvalue",
"width": 125
},
{
"data": "field_3",
"width": 183
},
{
"data": "field_11",
"width": 125
}
]
Кажется, я не могу найти правильный синтаксис для обновления этого конкретного значения массива во всех строках таблицы. Любая помощь приветствуется.
UPDATE tbl SET json_obj = json_obj || json_build_object('data', '<some_value>');
Не знаю, как вы обрабатываете, какие данные получают какое значение. Это применит один и тот же<some_value>
к каждой записи. Такая конкатенация уничтожит любой ранее существовавший кортеж"data":<value>
в json. - person J Spratt   schedule 04.02.2021