PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como filtrar linhas em valores aninhados em uma coluna json?


Sua consulta está próxima. json_each() é a função chave. Ou jsonb_each() para jsonb . Algumas melhorias:
SELECT *
FROM   things t
WHERE  EXISTS (
   SELECT FROM json_each(t.blueprint) b
   WHERE  b.value->>'name' ILIKE 'azamund'
   );

Antigo sqlfiddle
db<>fiddle aqui

Alternativa com matriz JSON


Você já viu minha resposta relacionada para matrizes JSON:

Embora a consulta de objetos JSON aninhados pareça tão simples, há um suporte a índice superior para a matriz:

Pode ficar mais simples/eficiente com SQL/JSON no Postgres 12...