Du kan använda json_array_elements
funktion för att generera en SETOF json
från en array:
SELECT name, json_array_elements(data) AS author
FROM publisher
Med det kan du använda den som en underfråga, så att du kan filtrera vad du vill, t.ex.:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Observera bara att om du har många rader i den här tabellen, kommer prestandan för sådana frågor (åtminstone för nuvarande version, 9.3) att vara riktigt dålig. Jag skulle rekommendera dig att normalisera data till tabeller.