Перейти к основному содержимому

json_each

Разворачивает внешние элементы JSON-объекта в набор пар ключ-значение, размещенных в двух столбцах, и возвращает таблицу, состоящую из одной строки для каждого элемента.

подсказка

Все JSON-функции и операторы перечислены в навигации и на странице обзора

Ускорьте ваши запросы с помощью генерируемых столбцов

Синтаксис

json_each(json_object_expr)

Параметры

json_object_expr: выражение, представляющее JSON-объект. Объект может быть JSON-столбцом или JSON-объектом, созданным функцией-конструктором JSON, такой как PARSE_JSON.

Возвращаемое значение

Возвращает два столбца: один с именем key и один с именем value. Столбец key хранит значения VARCHAR, а столбец value хранит JSON-значения.

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

Функция json_each является табличной функцией, которая возвращает таблицу. Возвращаемая таблица представляет собой результирующий набор, состоящий из нескольких строк. Поэтому в предложении FROM должно использоваться боковое соединение (lateral join) для объединения возвращаемой таблицы с исходной таблицей. Боковое соединение обязательно, но ключевое слово LATERAL является необязательным. Функция json_each не может использоваться в предложении SELECT.

Примеры

-- В качестве примера используется таблица с именем tj. В таблице tj столбец j является JSON-объектом.
mysql> SELECT * FROM tj;
+------+------------------+
| id | j |
+------+------------------+
| 1 | {"a": 1, "b": 2} |
| 3 | {"a": 3} |
+------+------------------+

-- Разворачиваем столбец j таблицы tj в два столбца по ключу и значению для получения результирующего набора, состоящего из нескольких строк. В этом примере ключевое слово LATERAL используется для объединения результирующего набора с таблицей tj.

mysql> SELECT * FROM tj, LATERAL json_each(j);
+------+------------------+------+-------+
| id | j | key | value |
+------+------------------+------+-------+
| 1 | {"a": 1, "b": 2} | a | 1 |
| 1 | {"a": 1, "b": 2} | b | 2 |
| 3 | {"a": 3} | a | 3 |
+------+------------------+------+-------+