V MySQL je to JSON_LENGTH()
funkce vrací délku dokumentu JSON.
Když zavoláte tuto funkci, poskytnete jako argument dokument JSON. Můžete také zadat argument cesty, který vrátí délku hodnoty v dokumentu.
Syntaxe
Syntaxe vypadá takto:
JSON_LENGTH(json_doc[, path])
Kde json_doc
je dokument JSON, pro který se má vrátit hloubka a path
je volitelný argument, který lze použít k vrácení délky hodnoty v dokumentu.
Příklad 1 – Prázdný objekt
Zde je dokument JSON, který neobsahuje nic jiného než prázdný objekt.
SELECT JSON_LENGTH('{}') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 0 | +--------+
Příklad 2 – Objekt s daty
A co se stane, když přidáme data.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 1 | +--------+
To vrátí 1
protože objekt obsahuje jeden člen. Pokud přidáme druhého člena, stane se toto:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 2 | +--------+
Příklad 3 – Pole
Délka pole je počet prvků, které obsahuje.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
To platí, i když jeden z prvků obsahuje vlastní pole (nebo objekt).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
Příklad 4 – Argument cesty
Můžeme poskytnout volitelnou path
argument, který vrátí délku dané cesty v dokumentu.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 3 | +--------+
V tomto případě vrátíme délku Person
objekt, který obsahuje tři členy.
Pokud to zúžíme pouze na jeden z těchto členů (řekněme Name
člen), dostaneme toto:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 1 | +--------+
Ale když to zúžíme na Hobbies
pole, dostaneme toto:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Výsledek:
+--------+ | Result | +--------+ | 2 | +--------+