sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres Query JSON Array som innehåller något

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.




  1. Oracle:slå samman två olika frågor till en, GILLA &IN

  2. ORACLE SQL Group Genom att STILLA ge dubbletter

  3. Hur väljer man första och sista dataraden från ett mysql-resultat?

  4. Patchhistoriktabeller i Oracle Apps (11i/R12.1/R12.2)