Перейти к основному содержимому
Версия: 2.0.x

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 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 |
+------+------------------+------+-------+