Sie können das nicht "dynamisch" tun. Sie müssen die Spalten, die Sie haben möchten, angeben:
select name, description, id,
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;
Wenn Sie, dass eine Menge, möchten Sie vielleicht, dass in eine Ansicht setzen.
Eine weitere Option ist ein Objekttyp in Postgres zu erstellen, die die Attribute in Ihrem JSON repräsentiert, z.B.
create type core_type as (id integer, tax numeric, price numeric, code varchar);
können Sie werfen dann die JSON auf diese Art und die entsprechenden Attribute aus dem JSON werden automatisch in Spalten umgewandelt werden:
Mit der oben genannten Art und die folgende JSON: {"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"}
Sie tun können:
select id, (json_populate_record(null::core_object, data)).*
from core;
und es wird zurück:
id | tax | price | code
---+------+-------+-----
1 | 4.50 | 10 | YXCV
Aber Sie müssen sicherstellen, dass jeder JSON-Wert in den Typ des entsprechenden Objektfelds umgewandelt werden kann.
Wenn Sie den Objekttyp ändern, wird jede Abfrage, die ihn verwendet, automatisch aktualisiert. So können Sie die Spalten, die Sie interessieren, über eine zentrale Definition verwalten.
See [Postgres: Flatten aggregierten Schlüssel/Wert-Paare aus einem JSONB Feld] (http://stackoverflow.com/a/ 35179515/1995738) – klin