Mysql
 sql >> Database >  >> RDS >> Mysql

JSON_LENGTH() – Restituisce la lunghezza di un documento JSON in MySQL

In MySQL, il JSON_LENGTH() la funzione restituisce la lunghezza di un documento JSON.

Quando chiami questa funzione, fornisci il documento JSON come argomento. Puoi anche fornire un argomento di percorso per restituire la lunghezza di un valore all'interno del documento.

Sintassi

La sintassi è questa:

JSON_LENGTH(json_doc[, path])

Dove json_doc è il documento JSON per il quale restituire la profondità e path è un argomento facoltativo che può essere utilizzato per restituire la lunghezza di un valore all'interno del documento.

Esempio 1 – Oggetto vuoto

Ecco un documento JSON che non contiene altro che un oggetto vuoto.

SELECT JSON_LENGTH('{}') 'Result';

Risultato:

+--------+
| Result |
+--------+
|      0 |
+--------+

Esempio 2 – Oggetto con dati

Ed ecco cosa succede se aggiungiamo dati.

SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';

Risultato:

+--------+
| Result |
+--------+
|      1 |
+--------+

Questo restituisce 1 perché l'oggetto contiene un membro. Se aggiungiamo un secondo membro, ecco cosa succede:

SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';

Risultato:

+--------+
| Result |
+--------+
|      2 |
+--------+

Esempio 3 – Matrici

La lunghezza di un array è il numero di elementi che contiene.

SELECT JSON_LENGTH('[1, 2, 3]') 'Result';

Risultato:

+--------+
| Result |
+--------+
|      3 |
+--------+

Questo è vero, anche se uno degli elementi contiene il proprio array (o oggetto).

SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';

Risultato:

+--------+
| Result |
+--------+
|      3 |
+--------+

Esempio 4 – L'argomento del percorso

Possiamo fornire un path opzionale argomento per restituire la lunghezza di un determinato percorso all'interno del documento.

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

Risultato:

+--------+
| Result |
+--------+
|      3 |
+--------+

In questo caso restituiamo la lunghezza della Person oggetto, che contiene tre membri.

Se lo restringiamo a uno solo di quei membri (ad esempio, il Name membro), otteniamo questo:

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

Risultato:

+--------+
| Result |
+--------+
|      1 |
+--------+

Ma se lo restringiamo a Hobbies array, otteniamo questo:

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

Risultato:

+--------+
| Result |
+--------+
|      2 |
+--------+