In MySQL is de JSON_LENGTH()
functie retourneert de lengte van een JSON-document.
Wanneer u deze functie aanroept, geeft u het JSON-document als argument op. U kunt ook een padargument opgeven om de lengte van een waarde in het document te retourneren.
Syntaxis
De syntaxis gaat als volgt:
JSON_LENGTH(json_doc[, path])
Waar json_doc
is het JSON-document waarvoor de diepte moet worden geretourneerd, en path
is een optioneel argument dat kan worden gebruikt om de lengte van een waarde in het document te retourneren.
Voorbeeld 1 – Leeg object
Hier is een JSON-document dat niets anders bevat dan een leeg object.
SELECT JSON_LENGTH('{}') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 0 | +--------+
Voorbeeld 2 – Object met gegevens
En dit is wat er gebeurt als we gegevens toevoegen.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 1 | +--------+
Dit retourneert 1
omdat het object één lid bevat. Als we een tweede lid toevoegen, gebeurt het volgende:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 2 | +--------+
Voorbeeld 3 – Arrays
De lengte van een array is het aantal elementen dat het bevat.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+
Dit is waar, zelfs als een van de elementen zijn eigen array (of object) bevat.
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+
Voorbeeld 4 – Het padargument
We kunnen een optioneel path
geven argument om de lengte van een bepaald pad in het document terug te geven.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 3 | +--------+
In dit geval retourneren we de lengte van de Person
object, dat drie leden bevat.
Als we het beperken tot slechts één van die leden (zeg, de Name
lid), krijgen we dit:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 1 | +--------+
Maar als we het beperken tot de Hobbies
array, krijgen we dit:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultaat:
+--------+ | Result | +--------+ | 2 | +--------+