En MySQL, JSON_LENGTH() la función devuelve la longitud de un documento JSON.
Cuando llama a esta función, proporciona el documento JSON como argumento. También puede proporcionar un argumento de ruta para devolver la longitud de un valor dentro del documento.
Sintaxis
La sintaxis es así:
JSON_LENGTH(json_doc[, path])
Donde json_doc es el documento JSON para el que se devolverá la profundidad y path es un argumento opcional que se puede usar para devolver la longitud de un valor dentro del documento.
Ejemplo 1:objeto vacío
Aquí hay un documento JSON que no contiene nada más que un objeto vacío.
SELECT JSON_LENGTH('{}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Ejemplo 2:objeto con datos
Y esto es lo que sucede si agregamos datos.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Esto devuelve 1 porque el objeto contiene un miembro. Si agregamos un segundo miembro, esto es lo que sucede:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+
Ejemplo 3:matrices
La longitud de una matriz es el número de elementos que contiene.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Esto es cierto, incluso si uno de los elementos contiene su propia matriz (u objeto).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Ejemplo 4:el argumento de la ruta
Podemos proporcionar una path opcional argumento para devolver la longitud de una ruta dada dentro del documento.
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
En este caso devolvemos la longitud de la Person objeto, que contiene tres miembros.
Si lo reducimos a solo uno de esos miembros (digamos, el Name miembro), obtenemos esto:
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Pero si lo limitamos a los Hobbies matriz, obtenemos esto:
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+