如何从JSONB字段中的嵌套键生成新的行和列输出?

时间:2019-03-06 19:05:48

标签: sql postgresql

字段JSONB结构:

{
  ...
  "field_name": "field_value",
  "columns": [
    ...
    {
        "nested_key_1": "nested_value_1"
        "nested_key_2": "nested_value_2"
    },
    {
        "nested_key_1": "nested_value_1"
        "nested_key_2": "nested_value_2"
    },
  ],
}

所需的输出:

----------------------------------------------
|   |  nested_key_1     |   "nested_key_2"  |
----------------------------------------------
| 1 |  nested_value_1   |   nested_value_2  |
----------------------------------------------
| 2 |  nested_value_1   |   nested_value_2  |
----------------------------------------------

我为实现这一目标的尝试之一:

select * from (
  select cast (
    json_array_elements(json_field::json->'columns') as text
  ) as column_data from table_name
) as temp

但是,这只是将columns数组的内容添加到单个字段中。

如何获得所需的输出?

1 个答案:

答案 0 :(得分:1)

使用json_to_recordset

    SELECT  x.*
FROM pjson_table
   , json_to_recordset(myjson::json) x 
        (  nested_key_1 text
         , nested_key_2 text         
        )