【问题标题】:PostgreSQL : Cannot convert JSON to row resultPostgreSQL:无法将 JSON 转换为行结果
【发布时间】:2020-08-25 10:05:58
【问题描述】:

我在 PostgreSQL 数据库表中有 JSOn 数据。

{
    "city": "NY",
    "country": "US",
    "sales": [145, 222, 122, 124, 172],
    "dates": ["13.05.2020", "2.05.2020", "21.05.2020", "30.04.2020", "29.04.2020"]
}

我想像在 JSON 数据中一样将这些值转换为行结果,但由于这是一个数组,即使查看 JSON Functions and Operators,我也无法评估结果。

我在第一步尝试类似的事情:

select * from json_array_elements(select info ->> 'sales' from my_table) 

并等待这样的结果:

sales
------
145
222
122
124
172

【问题讨论】:

    标签: sql arrays json postgresql unnest


    【解决方案1】:

    您需要横向连接:

    select s.*
    from my_table mt
      cross join lateral json_array_elements_text(info -> 'sales') as s
    

    【讨论】:

    • 感谢您的回复。它似乎有效,但这种方法的背后是什么?对不起,我是 PostgreSQL 的新手,并且看一个更简单的方法,因为它很常见,并且可能有更智能的解决方案来满足这种需求。有什么想法吗?
    • 也没有这种方法的信息,您能否建议一些资源来获取有关该方法的信息? postgresql 手册是否包含此类信息?
    • 此外,我们是否应该始终使用交叉连接来进行这种数据检索(从数组)?或者有时在这种情况下使用左/右/内连接?
    • @Jason:见关于集合返回函数的章节:postgresql.org/docs/current/…
    • 我看了那本确实缺乏 JSON 示例的手册。有没有足够的例子的另一个资源?如果我想在您的答案中使用此查询获取其他字段怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2023-03-25
    • 2021-01-15
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多