Для получения значения по пути из колонки типа 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.

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