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.