sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo filtrar filas en valores anidados en una columna json?

Su consulta está cerca. json_each() es la función clave. O jsonb_each() para jsonb . Un par de mejoras:

SELECT *
FROM   things t
WHERE  EXISTS (
   SELECT FROM json_each(t.blueprint) b
   WHERE  b.value->>'name' ILIKE 'azamund'
   );

Antiguo sqlfiddle
db<>fiddle aquí

Alternativa con matriz JSON

Ya ha visto mi respuesta relacionada para matrices JSON:

Si bien la consulta de objetos JSON anidados parece igual de simple, hay un soporte de índice superior. para la matriz:

Puede volverse más simple/más eficiente con SQL/JSON en Postgres 12...