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

Jak převést postgresql 9.4 jsonb na objekt bez jazyka na straně funkce/serveru

Použijte jsonb_populate_record() (nebo json_populate_record() pro json ) s dobře známým typem řádku jako cílem. K registraci typu pro ad-hoc použití můžete použít dočasnou tabulku (pokud nemůžete použít existující tabulka nebo vlastní složený typ):

CREATE TEMP TABLE obj(a int, b int, c int, d int);

Potom:

SELECT t.id, d.*
FROM   test t
     , jsonb_populate_record(null::obj, t.data) d;

Nebo použijte jsonb_to_record() (nebo json_to_record() pro json ) a poskytněte seznam definic sloupců s voláním:

SELECT t.id, d.*
FROM   test t
     , jsonb_to_record(t.data) d(a int, b int, c int, d int);

Nebo extrahovat a přenášet každá pole jednotlivě:

SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
         , (data->>'c')::int AS c, (data->>'d')::int AS d
FROM   test;

Všechny tři fungují pro json a jsonb podobně. Stačí použít příslušnou variantu funkce.

Související:



  1. Jak kontrolovat podmínky a zapisovat text do textových souborů oracle formulářů

  2. Jak povolit vzdálený přístup k databázi PostgreSQL

  3. SQL injekce v ADOdb a obecné zabezpečení webu

  4. Jak získat sloupec primárního klíče v Oracle?