sql >> Database >  >> RDS >> PostgreSQL

Hoe postgresql 9.4 jsonb naar object te converteren zonder functie/server-side taal

Gebruik jsonb_populate_record() (of json_populate_record() voor json ) met een bekend rijtype als doel. U kunt een tijdelijke tabel gebruiken om een ​​type te registreren voor ad-hocgebruik (als u geen bestaande kunt gebruiken tabel of aangepast samengesteld type):

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

Dan:

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

Of gebruik jsonb_to_record() (of json_to_record() voor json ) en geef een kolomdefinitielijst met de oproep:

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

Of extraheer en cast elk veld individueel:

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 drie werken voor json en jsonb gelijk. Gebruik gewoon de betreffende functievariant.

Gerelateerd:



  1. PostgreSQL - Referenties voor externe sleutels wederzijds exclusieve tabellen

  2. Hoe Mysql-variabelen te gebruiken met Hibernate?

  3. Probleem bij het opslaan van breedte- en lengtegraadwaarden in de MySQL-database

  4. Kan ik een INT-waarde + 1 bijwerken en de nieuwe waarde retourneren?