U kunt de json_array_elements
. gebruiken functie om een SETOF json
te genereren uit een array:
SELECT name, json_array_elements(data) AS author
FROM publisher
Als je dat hebt, kun je het als een subquery gebruiken, zodat je kunt filteren wat je wilt, bijvoorbeeld:
SELECT DISTINCT author->>'author'
FROM (
SELECT name, json_array_elements(data) AS author
FROM publisher
) t
WHERE t.author->>'type' = 'Novel';
Houd er rekening mee dat als je veel rijen in deze tabel hebt, de prestaties van dergelijke zoekopdrachten (tenminste voor de huidige versie 9.3) erg slecht zullen zijn. Ik raad je aan om de gegevens in tabellen te normaliseren.