从postgres中的所有JSON字段获取值

时间:2017-08-01 08:09:37

标签: sql json postgresql

我需要一个SQL查询,我可以选择所有json密钥。以下查询让我获取JSON字段的所有键。但是我有点不知所措,我会如何进行查询以获得所有价值。

SELECT DISTINCT ON (key.*) key.*
FROM my_table,
jsonb_object_keys(my_table.json_field) as key

因此上述查询的结果只是

key1 
key2

使用以下查询,您将得到与此

类似的结果
SELECT * FROM my_table

| id | json_field |
| -- | ---------- |
| 1  | '{"key1": "value1"}' |
| 2  | '{"key2": "value2"}' |

我正在寻找的结果将是以下

| id | key1   | key2   |
| -- | -------| ------ | 
| 1  | value1 | null   |
| 2  | null   | value2 |

难以理解的是,我不知道所有键的名称,这些键也可能是单行的许多键。

1 个答案:

答案 0 :(得分:0)

select distinct on (field_1, field_2) id, job_id, field_1, field_2
from
    my_table,
    jsonb_populate_recordset(json_field) jprs (field_1 int, field2 text)

https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE