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: