Anda tidak dapat melakukan itu "secara dinamis". Anda perlu menentukan kolom yang ingin Anda miliki:
select name, description, id,
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;
Jika Anda sering melakukannya, Anda mungkin ingin menampilkannya.
Opsi lain adalah membuat tipe objek di Postgres yang mewakili atribut di JSON Anda, mis.
create type core_type as (id integer, tax numeric, price numeric, code varchar);
Anda kemudian dapat mentransmisikan JSON ke jenis itu dan atribut yang sesuai dari JSON akan secara otomatis dikonversi ke kolom:
Dengan jenis di atas dan JSON berikut:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"}
Anda dapat melakukan:
select id, (json_populate_record(null::core_type, data)).*
from core;
dan itu akan kembali:
id | tax | price | code
---+------+-------+-----
1 | 4.50 | 10 | YXCV
Tetapi Anda perlu memastikan bahwa setiap nilai JSON dapat dilemparkan ke jenis bidang objek yang sesuai.
Jika Anda mengubah tipe objek, setiap kueri yang menggunakannya akan diperbarui secara otomatis. Jadi Anda dapat mengelola kolom yang Anda minati, melalui definisi sentral.