sql >> Database >  >> RDS >> PostgreSQL

Postgres Query JSON-array die iets bevat

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.




  1. MySQL Fire Trigger voor zowel invoegen als bijwerken

  2. SELECT DISTINCT is langzamer dan verwacht op mijn tafel in PostgreSQL

  3. PL/SQL:numerieke of waardefout:tekenreeksbuffer te klein %ROWTYPE

  4. MySQL-zoekopdracht met uft8_general_ci is hoofdlettergevoelig voor FULLTEXT?