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

json_length

Возвращает длину JSON-документа. Если указан путь, эта функция возвращает длину значения, определенного по этому пути.

подсказка

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

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

Длина документа определяется согласно следующим правилам:

  • Длина скалярного значения равна 1. Например, длина 1, "a", true, false и null равна 1.

  • Длина массива равна количеству элементов массива. Например, длина [1, 2] равна 2.

  • Длина объекта равна количеству членов объекта. Например, длина {"a": 1} равна 1.

  • Длина вложенных массивов или объектов не учитывается. Например, длина {"a": [1, 2]} равна 1, поскольку вложенный массив [1, 2] не включается в расчет длины.

Синтаксис

json_length(json_doc[, path])

Параметры

json_doc: обязательный, JSON-документ, для которого нужно вернуть длину.

path: необязательный. Используется для возврата длины значения внутри документа. Путь обычно начинается с $ и использует . в качестве разделителя пути. [] используется как индекс массива, который начинается с 0.

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

Возвращает значение типа INT.

Возвращается ошибка, если JSON-документ не является валидным документом.

0 возвращается в любом из следующих сценариев:

  • path не определяет значение в документе.

  • Путь не является валидным выражением пути.

  • Путь содержит подстановочные знаки * или **.

Примеры

Пример 1: Возврат длины скалярного значения.

select json_length('1');
+------------------+
| json_length('1') |
+------------------+
| 1 |
+------------------+

Пример 2: Возврат длины пустого объекта.

select json_length('{}');
+-------------------+
| json_length('{}') |
+-------------------+
| 0 |
+-------------------+

Пример 3: Возврат длины объекта, содержащего данные.

select json_length('{"Name": "Homer"}');
+----------------------------------+
| json_length('{"Name": "Homer"}') |
+----------------------------------+
| 1 |
+----------------------------------+

Пример 4: Возврат длины JSON-массива.

select json_length('[1, 2, 3]');
+--------------------------+
| json_length('[1, 2, 3]') |
+--------------------------+
| 3 |
+--------------------------+

Пример 5: Возврат длины JSON-массива, в котором один элемент содержит вложенный массив.

Вложенный массив [3, 4] не включается в расчет длины.

select json_length('[1, 2, [3, 4]]');
+-------------------------------+
| json_length('[1, 2, [3, 4]]') |
+-------------------------------+
| 3 |
+-------------------------------+

Пример 6: Возврат длины объекта, указанного путем $.Person.

SET @file = '{  
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
select json_length(@file, '$.Person') 'Result';

Пример 7: Возврат длины значения, указанного путем $.y.

select json_length('{"x": 1, "y": [1, 2]}', '$.y');
+---------------------------------------------+
| json_length('{"x": 1, "y": [1, 2]}', '$.y') |
+---------------------------------------------+
| 2 |
+---------------------------------------------+