如何在postgresql中将json对象作为列?
发布时间:2020-12-13 18:04:30 所属栏目:百科 来源:网络整理
导读:我在mu PostgreSQL 9.05上有这些表: 表:核心 字段:名称,描述,数据 数据字段是一个json字段,带有(例如):{“id”:“100”,“tax”:“4,5”} 每个数据始终是一个json. 我的问题是:我可以将所有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值都可以转换为相应对象字段的类型. 如果更改对象类型,则将自动更新使用它的任何查询.因此,您可以通过中央定义管理您感兴趣的列. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |