sql >> Base de Datos >  >> RDS >> Mysql

JSON_LENGTH():devuelve la longitud de un documento JSON en MySQL

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