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