Gunakan jsonb_populate_record()
(atau json_populate_record()
untuk json
) dengan tipe baris terkenal sebagai target. Anda dapat menggunakan tabel temp untuk mendaftarkan jenis untuk penggunaan ad-hoc (jika Anda tidak dapat menggunakan yang sudah ada tabel atau jenis komposit khusus):
CREATE TEMP TABLE obj(a int, b int, c int, d int);
Kemudian:
SELECT t.id, d.*
FROM test t
, jsonb_populate_record(null::obj, t.data) d;
Atau gunakan jsonb_to_record()
(atau json_to_record()
untuk json
) dan berikan daftar definisi kolom dengan panggilan:
SELECT t.id, d.*
FROM test t
, jsonb_to_record(t.data) d(a int, b int, c int, d int);
Atau ekstrak dan masukkan setiap bidang satu per satu:
SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
, (data->>'c')::int AS c, (data->>'d')::int AS d
FROM test;
Ketiganya berfungsi untuk json
dan jsonb
sama. Cukup gunakan varian fungsi masing-masing.
Terkait: