PostgreSQL | Как присвоить значение в JSONB?

PostgreSQL | Как присвоить значение в JSONB?

Существует несколько способов присваивания значений в свойствах JSONB-объектов в PostgreSQL:

  1. Квадратные скобки и строка
  2. Функция jsonb_set()
  3. Конкатенация с другим JSONB объектом
  4. Конкатенация с результатом функции 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_set
Присваивание — функция jsonb_set

 

Конкатенация с другим JSONB объектом

SQL-запрос:

DO $$
declare
  obj jsonb := '{"q":777}';
begin
  raise notice 'obj (ДО) = %', obj;
  obj := obj || '{"r":888}';
  raise notice 'obj (ПОСЛЕ) = %', obj;
end;
$$

Результат присваивания:

Присваивание - Конкатенация с другим JSONB объектом
Присваивание — Конкатенация с другим JSONB объектом

 

Конкатенация с результатом функции 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;
$$

Результат присваивания:

Присваивание - Конкатенация с результатом функции jsonb_build_object()
Присваивание — Конкатенация с результатом функции jsonb_build_object()

 

Информационные ссылки

Клиент SQL — pgAdminhttps://www.pgadmin.org

Клиент SQL — DBeaverhttps://dbeaver.io

Официальный сайт СУБД PostgreSQLhttps://www.postgresql.org

Функции JSON — https://postgrespro.ru/docs/postgresql/16/functions-json

Тип JSON- https://postgrespro.ru/docs/postgresql/16/datatype-json