->
Construcción SQL
Equivalente en MySQL:
Extrae un valor de un JSON por una clave de objeto o un número de elemento de array y lo devuelve como JSON.
PostgreSQL 17.9
json -> key
json -> index- json
- Valor de tipo json o jsonbjson | jsonb
- key
- Clave del objetotext
- index
- Número del elemento del array desde 0; uno negativo cuenta desde el finalinteger
Valor devuelto
Valor de tipo json o jsonb; NULL si no existe la clave o el elemento
Ejemplos
Objeto anidado
PostgreSQL 17.9
SELECT '{"user": {"name": "Ann", "tags": ["sql", "pg"]}}'::jsonb->'user' AS user_json;Cadena de operadores y un elemento desde el final
PostgreSQL 17.9
SELECT '{"user": {"name": "Ann", "tags": ["sql", "pg"]}}'::jsonb->'user'->'tags'->0 AS first_tag,
'[10, 20, 30]'::jsonb->-1 AS last_element;Código promocional de los datos de un evento
PostgreSQL 17.9
SELECT event_id,
event_name,
metadata->'promo_code' AS promo_code
FROM events
LIMIT 5;Detalles
El resultado sigue siendo JSON, así que los operadores se pueden encadenar: data -> 'user' -> 'tags' -> 0. En el último paso, si necesitas texto simple, usa ->>.
Si la clave no existe, el resultado es NULL, no un error. Una cadena con JSON hay que convertirla explícitamente: '{...}'::jsonb.