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: