Sie können die json_array_elements
verwenden Funktion zum Generieren eines SETOF json
aus einem Array:
SELECT name, json_array_elements(data) AS author
FROM publisher
Damit können Sie es als Unterabfrage verwenden, sodass Sie filtern können, was Sie möchten, z. B.:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Beachten Sie nur, dass die Leistung solcher Abfragen (zumindest für die aktuelle Version 9.3) wirklich schlecht ist, wenn Sie viele Zeilen in dieser Tabelle haben. Ich würde Ihnen empfehlen, die Daten in Tabellen zu normalisieren.