Перейти к содержанию

JSON_EXTRACT_PATH

Функция JSON_EXTRACT_PATH извлекает данные из поля в формате JSON согласно указанным компонентам пути.

Синтаксис

JSON_EXTRACT_PATH ( expression , expression )

Первый аргумент функции — поле типа JSON, из которого извлекаются данные.

Второй и последующие аргументы функции — компоненты пути, по которому извлекаются данные из JSON. Представляют собой результаты выражений типа TEXT.

Выражение

Диаграмма

NOT table . column abs case cast coalesce current_date ilike json_extract_path instance_uuid like literal localtimestamp lower pico_config_file_path pico_instance_dir pico_instance_name pico_instance_uuid pico_raft_leader_id pico_raft_leader_uuid pico_replicaset_name pico_tier_name substr substring to_char to_date trim upper version NOT EXISTS ( dql ( dql expression , ) IS NOT NULL TRUE FALSE UNKNOWN expression NOT BETWEEN expression AND IN + - * / % <> != >= > <= < = || AND OR expression

Литерал

Диаграмма

TRUE FALSE NULL decimal double integer string unsigned $ unsigned ?

Пример использования

На данный момент добавление данных в формате JSON в пользовательские таблицы с помощью стандартных средства SQL в Picodata не поддерживается.

Тем не менее, извлечение JSON-данных может потребоваться из системных таблиц. Например, такие данные хранятся для поля домена отказа. Запустим инстанс со следующими параметрами в его файле конфигурации:

instance:
  ...
  name: 'i5'
  failure_domain: { "REGION":"['us']","DC":"us-west-1" }
  ...

Получим данные о домене отказа инстанса i5:

SELECT failure_domain FROM _pico_instance where NAME = 'i5';
+-----------------------------------------+
| failure_domain                          |
+=========================================+
| {"REGION": "['US']", "DC": "US-WEST-1"} |
+-----------------------------------------+
(1 rows)

Получим данные с помощью функции JSON_EXTRACT_PATH:

SELECT json_extract_path(failure_domain, 'DC') FROM _pico_instance WHERE name = 'i5';

Вывод:

+-----------+
| col_1     |
+===========+
| US-WEST-1 |
+-----------+
(1 rows)

См. также: