Для получения значения по пути из колонки типа 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.
Добавить комментарий