PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres Query JSON Array qui contient quelque chose

Vous pouvez utiliser le json_array_elements fonction pour générer un SETOF json depuis un tableau :

SELECT name, json_array_elements(data) AS author
FROM publisher

Avec cela, vous pouvez l'utiliser comme sous-requête, vous pouvez donc filtrer ce que vous voulez, par exemple :

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

Notez simplement que si vous avez de nombreuses lignes dans cette table, les performances de telles requêtes (du moins pour la version actuelle, 9.3) seront vraiment mauvaises. Je vous recommande de normaliser les données dans des tableaux.