【问题标题】:How to get data from Json to multiple column PostgreSQL如何从 Json 获取数据到多列 PostgreSQL
【发布时间】:2020-10-06 04:53:38
【问题描述】:

我想在 JSON 中提取许多对象(不是所有对象),但不想像这样为每一件事都键入:

Select *,  
metrics::json ->> 'spend',
metrics::json ->> 'impressions',
metrics::json ->> 'clicks'
from t1

Here my DEMO 显示真实数据和大小写,如何提取到多列并将其转换为精确的数据类型(浮点数、整数)

I refer this question,我可以将json_to_record 用于此方法或其他方法吗?

【问题讨论】:

    标签: sql json postgresql


    【解决方案1】:

    您可以在返回结构中指定所需的列。因此,如果您只对“支出”和“展示次数”感兴趣,您可以这样做

    SELECT x.*
    FROM t1, json_to_record(t1.metrics) 
    AS x(spend numeric, impressions int);
    

    【讨论】:

    • 我们什么时候使用数字?我们是否可以始终对所有数字使用数字,包括int? @蓝星
    • 我实际上只是使用了数字,因为您的示例将支出作为数字。我只建议在您需要精确的十进制数字时使用数字,例如钱(美分)。
    • 等一下!在我的真实情况下,我想提取'unique_actions.link_click' 对象然后使列名link_click 但不能这样做,你有什么想法吗?请在演示中做到这一点dbfiddle.uk/…@Blue Star
    • 如果 JSON 密钥的中间有句点,则需要将其括在双引号中才能正常工作。如果要更改其列名,则需要在 select 子句中明确指定 (SELECT x.*, "unique_actions.link_click" as link_click)。
    • 如果是这样,我需要输入两次unique_actions.link_click(一次用于名称,一次用于提取数据)。你认为它是最优的吗?还有其他方法吗? @蓝星
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2022-06-19
    • 2018-09-22
    • 2016-10-24
    • 2019-01-15
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多