PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment convertir postgresql 9.4 jsonb en objet sans fonction/langage côté serveur

Utilisez jsonb_populate_record() (ou json_populate_record() pour json ) avec un type de ligne bien connu comme cible. Vous pouvez utiliser une table temporaire pour enregistrer un type pour une utilisation ad hoc (si vous ne pouvez pas utiliser un existant tableau ou type composite personnalisé) :

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

Ensuite :

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

Ou utilisez jsonb_to_record() (ou json_to_record() pour json ) et fournissez une liste de définition de colonne avec l'appel :

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

Ou extraire et diffuser chaque champ individuellement :

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

Tous les trois fonctionnent pour json et jsonb ressemblent. Utilisez simplement la variante de fonction correspondante.

Connexe :