sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres Query JSON Array, der indeholder noget

Du kan bruge json_array_elements funktion til at generere en SETOF json fra et array:

SELECT name, json_array_elements(data) AS author
FROM publisher

Når du har det, kan du bruge det som en underforespørgsel, så du kan filtrere, hvad du vil, f.eks.:

SELECT DISTINCT author->>'author'
FROM (
    SELECT name, json_array_elements(data) AS author
    FROM publisher
) t
WHERE t.author->>'type' = 'Novel';

Bemærk blot, at hvis du har mange rækker i denne tabel, vil ydelsen af ​​sådanne forespørgsler (i hvert fald for den nuværende version, 9.3) være rigtig dårlig. Jeg vil anbefale dig at normalisere dataene til tabeller.




  1. Databasedesign:hvordan understøtter man et flersproget websted?

  2. Ydeevnefald efter 5 dages drift af webapplikation, hvordan kan man se flaskehalsen?

  3. nulværdi undtagelse ved indtastning i databasen

  4. Sådan returneres forespørgselsresultater som en kommasepareret liste i SQL Server – STRING_AGG()