sql >> Databáze >  >> RDS >> PostgreSQL

Extrahujte klíč, hodnotu z objektů json v Postgresu

SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;

Funkce json_each_text() je sada vracení funkce, takže byste ji měli používat jako zdroj řádků. Výstup funkce je zde připojen bočně do tabulky q , což znamená, že pro každý řádek v tabulce každý (key, value) pár z data sloupec je připojen pouze k tomuto řádku, takže vztah mezi původním řádkem a řádky vytvořenými z json objekt je udržován.

Tabulka q může být také velmi komplikovaný dílčí dotaz (nebo VALUES klauzule, jako ve vaší otázce). Ve funkci je příslušný sloupec použit z výsledku vyhodnocení tohoto dílčího dotazu, takže použijete pouze odkaz na alias dílčího dotazu a sloupec (alias) v dílčím dotazu.



  1. při použití odkazu na databázi Oracle došlo k chybě ORA-12154 TNS Nelze vyřešit zadaný identifikátor připojení

  2. Hromadné vkládání do MYSQL ze souborů XML

  3. Jak změnit schéma více PostgreSQL tabulek v jedné operaci?

  4. Chyba syntaxe na nebo blízko END s názvem sloupce END