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

Sådan konverteres postgresql 9.4 jsonb til objekt uden funktion/serversidesprog

Brug jsonb_populate_record() (eller json_populate_record() for json ) med en velkendt rækketype som mål. Du kan bruge en midlertidig tabel til at registrere en type til ad hoc-brug (hvis du ikke kan bruge en eksisterende tabel eller brugerdefineret sammensat type):

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

Så:

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

Eller brug jsonb_to_record() (eller json_to_record() for json ) og angiv en kolonnedefinitionsliste med kaldet:

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

Eller udtræk og støb hvert felt individuelt:

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

Alle tre fungerer for json og jsonb ens. Brug blot den respektive funktionsvariant.

Relateret:



  1. 9.6 Scariest Patch Tournament

  2. Hvordan får jeg adgang til Oracle fra Python?

  3. En oversigt over PostgreSQL &MySQL krydsreplikering

  4. Gå i dvale ved at sende overflødige forespørgsler til databasen