PostgreSQL: выборка поля из JSON

от автора

в

Для получения значения по пути из колонки типа JSON в PostgreSQL, можно использовать оператор -> или ->>.

  • Оператор -> возвращает значение в формате JSON.
  • Оператор ->> возвращает значение в виде текста.

Пример таблицы:

CREATE TABLE example_table (
    id SERIAL PRIMARY KEY,
    data JSON
);

INSERT INTO example_table (data) VALUES 
('{"user": {"name": "John", "age": 30, "address": {"city": "New York", "zip": "10001"}}}'),
('{"user": {"name": "Alice", "age": 25, "address": {"city": "Los Angeles", "zip": "90001"}}}');

Пример 1: Получение значения по ключу

Если вы хотите получить значение по ключу, например, имя пользователя:

SELECT data->'user'->'name' AS user_name
FROM example_table;

Этот запрос вернет:

 user_name
-----------
 "John"
 "Alice"

Если вы хотите получить значение в виде текста:

SELECT data->'user'->>'name' AS user_name
FROM example_table;

Этот запрос вернет:

 user_name
-----------
 John
 Alice

Пример 2: Получение значения по вложенному пути

Если вам нужно получить значение из вложенного JSON-объекта, например, город:

SELECT data->'user'->'address'->>'city' AS city
FROM example_table;

Этот запрос вернет:

    city
------------
 New York
 Los Angeles

Пример 3: Получение значения по индексу в массиве

Если ваш JSON содержит массив, вы можете получить значение по индексу:

SELECT data->'user'->'hobbies'->>0 AS first_hobby
FROM example_table;

Предположим, что hobbies — это массив, например:

{"user": {"name": "John", "hobbies": ["reading", "swimming"]}}

Этот запрос вернет:

 first_hobby
-------------
 reading

Таким образом, вы можете использовать операторы -> и ->> для извлечения данных из JSON-колонки в PostgreSQL.


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сколько будет 4 + 10?