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

Postgres Query JSON Array que contiene algo

Puede usar json_array_elements función para generar un SETOF json de una matriz:

SELECT name, json_array_elements(data) AS author
FROM publisher

Teniendo eso, puede usarlo como una subconsulta, para que pueda filtrar lo que quiera, por ejemplo:

SELECT DISTINCT author->>'author'
FROM (
    SELECT name, json_array_elements(data) AS author
    FROM publisher
) t
WHERE t.author->>'type' = 'Novel';

Solo tenga en cuenta que si tiene muchas filas en esta tabla, el rendimiento de tales consultas (al menos para la versión actual, 9.3) será realmente malo. Te recomiendo que normalices los datos en tablas.