PostgreSQL | Как прочитать значение из JSON-объекта по ключу?

PostgreSQL | Как прочитать значение из JSON-объекта по ключу?

У нас есть таблица в PostgreSQL с JSON-объектами в одном столбце:

Таблица с JSON-объектами в PostgreSQL
Таблица с JSON-объектами в PostgreSQL

Нам нужно получить значение «www.efim360» из ключа «d«. Как это сделать? Как дотянуться до этого значения?

 

Давайте сначала отберём одну запись, в которой есть искомое нами значение и получим значение по одному столбцу:

SELECT jsonsdr FROM a.t_sdr WHERE id = 2;
Получили значение ячейки с JSON-объектом в PostgreSQL
Получили значение ячейки с JSON-объектом в PostgreSQL

Теперь мы можем использовать один из двух операторов, чтобы дотянуться до значения нужного ключа:

  • -> (ДЕФИС + ПРАВАЯ УГЛОВАЯ СКОБКА)
  • ->> (ДЕФИС + ПРАВАЯ УГЛОВАЯ СКОБКА + ПРАВАЯ УГЛОВАЯ СКОБКА)

Выполняем обращение к ключу «d«:

SELECT jsonsdr -> 'd' FROM a.t_sdr WHERE id = 2; -- как JSON-объект
Вытащили значение по ключу из JSON-объекта как JSON-объект - PostgreSQL
Вытащили значение по ключу из JSON-объекта как JSON-объект — PostgreSQL

 

SELECT jsonsdr ->> 'd' FROM a.t_sdr WHERE id = 2; -- как СТРОКА
Вытащили значение по ключу из JSON-объекта как СТРОКУ - PostgreSQL
Вытащили значение по ключу из JSON-объекта как СТРОКУ — PostgreSQL

 

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

Официальный сайт WEB-оболочки pgAdminhttps://www.pgadmin.org

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

Раздел «8.14. Типы JSON» — https://postgrespro.ru/docs/postgresql/14/datatype-json