В PostgreSQL есть два типа данных для работы с JSON: json и jsonb. Они отличаются друг от друга способом хранения данных и способом работы с ними.
⏩Тип данных json использует текстовый формат хранения JSON-данных, который позволяет хранить только простые типы данных JSON: строки, числа, логические значения, null и массивы или объекты, состоящие только из этих типов. Это означает, что при хранении данных типа json не происходит никакой оптимизации, и любые изменения в данных приводят к перезаписи всей строки JSON.
⏩Тип данных jsonb использует бинарный формат хранения JSON-данных, который позволяет хранить все типы данных JSON, включая вложенные объекты и массивы, а также дополнительные типы данных, такие как булевы значения, даты и времена и т.д. Бинарный формат данных jsonb позволяет эффективно хранить, индексировать и быстро выполнять запросы к данным в формате JSON, и при изменении данных не требует перезаписи всей строки JSON, а лишь тех частей, которые изменились.
⏩Создание объектов json
Одной из основных функций для работы с JSON является
jsonb_build_object(), которая позволяет создавать объекты JSON внутри запросов. Это может быть полезно, например, при импорте данных из внешних источников.Предположим, что мы хотим в
select-запросе динамически сгенерировать json-объект. Сделать это можно так:SELECT jsonb_build_object('name', 'Иван', 'age', 30, 'city', 'Москва') AS person;Этот запрос создаст JSON-объект со свойствами
name, age и city, которые будут содержать соответствующие значения. Результатом запроса будет следующий JSON-объект:{
"age": 30,
"city": "Москва",
"name": "Иван"
}📎 Подробнее
@sqlhub

