それを「動的に」行うことはできません。必要な列を指定する必要があります:
select name, description, id,
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;
それを頻繁に行う場合は、それをビューに入れたいと思うかもしれません。
もう1つのオプションは、JSONの属性を表すオブジェクトタイプをPostgresで作成することです。
create type core_type as (id integer, tax numeric, price numeric, code varchar);
次に、JSONをそのタイプにキャストすると、JSONの対応する属性が自動的に列に変換されます。
上記のタイプと次のJSONの場合:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"}
あなたができること:
select id, (json_populate_record(null::core_type, data)).*
from core;
そしてそれは戻ります:
id | tax | price | code
---+------+-------+-----
1 | 4.50 | 10 | YXCV
ただし、すべてのJSON値ができることを確認する必要があります 対応するオブジェクトフィールドのタイプにキャストされます。
オブジェクトタイプを変更すると、それを使用するすべてのクエリが自動的に更新されます。したがって、中央の定義を通じて、関心のある列を管理できます。