【问题标题】:How to select single field from array of json objects?如何从 json 对象数组中选择单个字段?
【发布时间】:2021-04-14 09:55:37
【问题描述】:

我有一个 JSONB 列,其值采用以下 JSON 结构

{
  "a": "value1", "b": [{"b1": "value2", "b3": "value4"}, {"b1": "value5", "b3": "value6"}]
}

我只需要在结果中选择b1 字段。所以预期的结果是

["value2", "value5"]

我可以使用查询选择完整的数组

select columnname->>'b' from tablename

【问题讨论】:

    标签: sql postgresql jsonb


    【解决方案1】:

    step-by-step demo:db<>fiddle

    SELECT
        jsonb_agg(elements -> 'b1')                       -- 2
    FROM mytable,
        jsonb_array_elements(mydata -> 'b') as elements   -- 1
    
    1. a) 从 b 元素中获取 JSON 数组 (b) 将数组元素分别提取到一行中
    2. a) 从数组元素中获取 b1 值 (b) 将这些值重新聚合到新的 JSON 数组中

    【讨论】:

      【解决方案2】:

      如果您使用的是 Postgres 12 或更高版本,则可以使用 JSON 路径查询:

      select jsonb_path_query_array(the_column, '$.b[*].b1')
      from the_table;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多