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

Postgres Query JSON Array que contém algo


Você pode usar o json_array_elements função para gerar um SETOF json de uma matriz:
SELECT name, json_array_elements(data) AS author
FROM publisher

Tendo isso, você pode usá-lo como uma subconsulta, para poder filtrar o que deseja, por exemplo:
SELECT DISTINCT author->>'author'
FROM (
    SELECT name, json_array_elements(data) AS author
    FROM publisher
) t
WHERE t.author->>'type' = 'Novel';

Apenas observe que se você tiver muitas linhas nesta tabela, o desempenho de tais consultas (pelo menos para a versão atual, 9.3) será muito ruim. Eu recomendo que você normalize os dados em tabelas.