Postgresql:获取jsonb列的所有最外层键

时间:2015-12-06 19:55:33

标签: postgresql postgresql-9.4 jsonb

假设我们有一个带有jsonb列的大表,其中只有json对象。如何获取列中所有最外层键的列表?

即。如果表格是这样的

| id | data_column                                          |
| ---| -----------------------------------------------------|
| 1  | {"key_1": "some_value", "key_2": "some_value"}       |
| 2  | {"key_3": "some_value", "key_4": "some_value"}       |
| 3  | {"key_1": "some_value", "key_4": "some_object"}      |
.....

是否可以获得类似这样的结果

| keys |
| -----|
| key_1|
| key_2|
| key_3|
| key_4|

1 个答案:

答案 0 :(得分:2)

是:

SELECT jsonb_object_keys(data_column) FROM test_table;

或者,如果您想删除重复项,请订购并将密钥作为列名称:

SELECT DISTINCT jsonb_object_keys(data_column) AS keys FROM test_table ORDER by keys;

jsonb_object_keys()/ json_object_keys()从json对象返回最外面的键。