->>
Конструкция SQL
Аналог в MySQL:
Достаёт из JSON значение по ключу объекта или номеру элемента массива и возвращает его как текст.
PostgreSQL 17.5
json ->> key
json ->> indexПараметры
- jsonjson | jsonb
- Значение типа json или jsonb
- keytext
- Ключ объекта
- indexinteger
- Номер элемента массива, начиная с 0; отрицательный отсчитывается с конца
Возвращаемое значение
Строка (text); NULL, если ключа или элемента нет
Примеры
Значение как текст
PostgreSQL 17.5
SELECT '{"name": "Ann", "age": 30}'::jsonb->>'name' AS name,
'[10, 20, 30]'::jsonb->>1 AS second_element;Число из JSON
PostgreSQL 17.5
SELECT '{"price": 100}'::jsonb->>'price' AS price_text,
('{"price": 100}'::jsonb->>'price')::integer * 2 AS doubled;События по источникам
PostgreSQL 17.5
SELECT metadata->>'utm_source' AS source,
COUNT(*) AS events
FROM events
WHERE metadata->>'utm_source' IS NOT NULL
GROUP BY source
ORDER BY events DESC;Подробности
В отличие от ->, результат — обычная строка, поэтому её можно сравнивать с текстом, группировать и приводить к другим типам. Значение JSON null превращается в NULL.
Арифметика и :: выполняются раньше ->>, поэтому при приведении результата нужны скобки: (data ->> 'price')::integer.