PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgres Query matrice JSON che contiene qualcosa

Puoi usare json_array_elements funzione per generare un SETOF json da un array:

SELECT name, json_array_elements(data) AS author
FROM publisher

Avendolo, puoi usarlo come sottoquery, così puoi filtrare ciò che vuoi, ad esempio:

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

Nota solo che se hai molte righe in questa tabella, le prestazioni di tali query (almeno per la versione corrente, 9.3) saranno davvero pessime. Ti consiglio di normalizzare i dati in tabelle.