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

Jak získat objekt json jako sloupec v postgresql?

To nelze dělat „dynamicky“. Musíte zadat sloupce, které chcete mít:

select name, description, id, 
       data ->> 'tax' as tax,
       data ->> 'other_attribute' as other_attribute
from core;

Pokud to děláte hodně, možná to budete chtít dát do pohledu.

Další možností je vytvořit v Postgresu typ objektu, který reprezentuje atributy ve vašem JSON, např.

create type core_type as (id integer, tax numeric, price numeric, code varchar);

Poté můžete přetypovat JSON na tento typ a odpovídající atributy z JSON budou automaticky převedeny na sloupce:

S výše uvedeným typem a následujícím JSON:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} můžete udělat:

select id, (json_populate_record(null::core_type, data)).*
from core;

a vrátí se:

id | tax  | price | code
---+------+-------+-----
 1 | 4.50 |    10 | YXCV

Musíte se ale ujistit, že každá hodnota JSON může přetypovat na typ odpovídajícího pole objektu.

Pokud změníte typ objektu, každý dotaz, který jej používá, bude automaticky aktualizován. Takže můžete spravovat sloupce, které vás zajímají, prostřednictvím centrální definice.



  1. SQL Server 2012:Přidejte propojený server do PostgreSQL

  2. Postgresql - výkon použití pole ve velké databázi

  3. Kdy se výkon Distinct a Group By liší?

  4. OracleException (0x80004005) při připojování k databázi Oracle