我在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值都可以转换为相应对象字段的类型.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。