Postgresql: получить все внешние ключи столбца 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|

person Manquer    schedule 06.12.2015    source источник


Ответы (1)


Да:

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.

person Samir Alajmovic    schedule 06.12.2015