Mysql
 sql >> Base de données >  >> RDS >> Mysql

JSON_LENGTH() - Renvoie la longueur d'un document JSON dans MySQL

Dans MySQL, le JSON_LENGTH() renvoie la longueur d'un document JSON.

Lorsque vous appelez cette fonction, vous fournissez le document JSON comme argument. Vous pouvez également fournir un argument de chemin pour renvoyer la longueur d'une valeur dans le document.

Syntaxe

La syntaxe ressemble à ceci :

JSON_LENGTH(json_doc[, path])

json_doc est le document JSON pour lequel renvoyer la profondeur, et path est un argument facultatif qui peut être utilisé pour renvoyer la longueur d'une valeur dans le document.

Exemple 1 – Objet vide

Voici un document JSON qui ne contient rien d'autre qu'un objet vide.

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

Résultat :

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

Exemple 2 – Objet avec données

Et voici ce qui se passe si nous ajoutons des données.

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

Résultat :

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

Cela renvoie 1 car l'objet contient un membre. Si nous ajoutons un deuxième membre, voici ce qui se passe :

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

Résultat :

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

Exemple 3 – Tableaux

La longueur d'un tableau est le nombre d'éléments qu'il contient.

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

Résultat :

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

Cela est vrai, même si l'un des éléments contient son propre tableau (ou objet).

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

Résultat :

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

Exemple 4 - L'argument du chemin

Nous pouvons fournir un path facultatif argument pour renvoyer la longueur d'un chemin donné dans le document.

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

Résultat :

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

Dans ce cas, nous renvoyons la longueur de Person objet, qui contient trois membres.

Si nous le réduisons à un seul de ces membres (par exemple, le Name membre), nous obtenons ceci :

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

Résultat :

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

Mais si nous le réduisons aux Hobbies tableau, nous obtenons ceci :

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

Résultat :

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