如何在postgresql中将json对象作为列?

前端之家收集整理的这篇文章主要介绍了如何在postgresql中将json对象作为列?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在mu Postgresql 9.05上有这些表:

表:核心
字段:名称,描述,数据

数据字段是一个json字段,带有(例如):{“id”:“100”,“tax”:“4,5”}

每个数据始终是一个json.

我的问题是:我可以将所有JSON字段作为查询字段吗?像这样返回:名称,身份证,税….

问题是:我的JSON确实有各种字段,可以是Id,税或其他.

你不能“动态地”做到这一点.您需要指定要拥有的列:
select name,description,id,data ->> 'tax' as tax,data ->> 'other_attribute' as other_attribute
from core;

如果你做了很多,你可能想把它放到一个视图中.

另一种选择是在Postgres中创建一个表示JSON中属性的对象类型,例如:

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_object,data)).*
from core;

它将返回:

id | tax  | price | code
---+------+-------+-----
 1 | 4.50 |    10 | YXCV

但是您需要确保每个JSON值都可以转换为相应对象字段的类型.

如果更改对象类型,则将自动更新使用它的任何查询.因此,您可以通过中央定义管理您感兴趣的列.

猜你在找的Postgre SQL相关文章