func-jsonPostgreSQL
JSONB_SET()
Изменяет значение по указанному пути внутри JSONB — без перезаписи всего документа.
Синтаксис
JSONB_SET(target, path, new_value [, create_if_missing])Примеры
Обновление поля верхнего уровня
SELECT JSONB_SET('{"name": "Аня", "age": 25}', '{age}', '26');→ {"name": "Аня", "age": 26}
Обновление одного поля в колонке JSONB
UPDATE products
SET attributes = JSONB_SET(attributes, '{price}', '999')
WHERE id = 1;Путь во вложенный объект через запятую
SELECT JSONB_SET('{"user": {"city": "Москва"}}', '{user,city}', '"Питер"');→ {"user": {"city": "Питер"}}
Важно знать
- ⚠path — это массив ключей вида '{key1,key2}', а не строка через точку.
- ⚠Значение (new_value) само должно быть валидным JSON — строку нужно обернуть в двойные кавычки.
- ⚠Четвёртый аргумент (по умолчанию TRUE) — создавать ли ключ, если его не было.