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