假设我们有一个带有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|
答案 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对象返回最外面的键。