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])
Où 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 | +--------+