gpt4 book ai didi

json - 如何在 postgresql 中获取一个 json 对象作为列?

转载 作者:行者123 更新时间:2023-11-29 11:14:26 26 4
gpt4 key购买 nike

我在 mu PostgreSQL 9.05 上有这些表:

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

data 字段是一个json字段,有(例如):{"id": "100", "tax": "4,5"}

每个数据总是一个 json。

我的问题是:我可以将所有 JSON 字段作为查询字段吗?像这样返回:name, description, id, tax....

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

最佳答案

你不能“动态地”做到这一点。您需要指定您想要的列:

select name, description, id, 
data ->> 'tax' as tax,
data ->> 'other_attribute' as other_attribute
from core;

如果您经常这样做,您可能希望将其放入 View 中。


另一种选择是在 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_type, data)).*
from core;

它会返回:

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

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

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

关于json - 如何在 postgresql 中获取一个 json 对象作为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com