Существует несколько способов присваивания значений в свойствах JSONB-объектов в PostgreSQL:
- Квадратные скобки и строка
- Функция jsonb_set()
- Конкатенация с другим JSONB объектом
- Конкатенация с результатом функции jsonb_build_object()
Для примера работы присваивания я буду использовать команду «DO». Визуальный вывод буду делать в журнал при помощи выражения «raise notice». Выполнять запросы буду в DBeaver — это клиент для SQL-подобных баз данных и не только.
Квадратные скобки и строка
SQL-запрос:
DO $$ declare obj jsonb := '{"q":777}'; begin raise notice 'obj (ДО) = %', obj; obj['w'] := 333; raise notice 'obj (ПОСЛЕ) = %', obj; end; $$
Результат присваивания:
Функция jsonb_set()
SQL-запрос:
DO $$ declare obj jsonb := '{"q":777}'; begin raise notice 'obj (ДО) = %', obj; obj := jsonb_set(obj, '{e}', '555'); raise notice 'obj (ПОСЛЕ) = %', obj; end; $$
Результат присваивания:
Конкатенация с другим JSONB объектом
SQL-запрос:
DO $$ declare obj jsonb := '{"q":777}'; begin raise notice 'obj (ДО) = %', obj; obj := obj || '{"r":888}'; raise notice 'obj (ПОСЛЕ) = %', obj; end; $$
Результат присваивания:
Конкатенация с результатом функции jsonb_build_object()
SQL-запрос:
DO $$ declare obj jsonb := '{"q":777}'; begin raise notice 'obj (ДО) = %', obj; obj := obj || jsonb_build_object('f', 444); raise notice 'obj (ПОСЛЕ) = %', obj; end; $$
Результат присваивания:
Информационные ссылки
Клиент SQL — pgAdmin — https://www.pgadmin.org
Клиент SQL — DBeaver — https://dbeaver.io
Официальный сайт СУБД PostgreSQL — https://www.postgresql.org
Функции JSON — https://postgrespro.ru/docs/postgresql/16/functions-json
Тип JSON- https://postgrespro.ru/docs/postgresql/16/datatype-json