Справочник по функциям

->>

Конструкция 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;
namesecond_element
Ann20

Число из JSON

PostgreSQL 17.5
SELECT '{"price": 100}'::jsonb->>'price' AS price_text,
	('{"price": 100}'::jsonb->>'price')::integer * 2 AS doubled;
price_textdoubled
100200

События по источникам

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;
sourceevents
email155
tiktok146
google143
facebook136
instagram133
direct124

Подробности

В отличие от ->, результат — обычная строка, поэтому её можно сравнивать с текстом, группировать и приводить к другим типам. Значение JSON null превращается в NULL.

Арифметика и :: выполняются раньше ->>, поэтому при приведении результата нужны скобки: (data ->> 'price')::integer.

Смотрите также