I MySQL, JSON_LENGTH()
funktion returnerar längden på ett JSON-dokument.
När du anropar den här funktionen tillhandahåller du JSON-dokumentet som ett argument. Du kan också ange ett sökvägsargument för att returnera längden på ett värde i dokumentet.
Syntax
Syntaxen ser ut så här:
JSON_LENGTH(json_doc[, path])
Där json_doc
är JSON-dokumentet för vilket djupet och path
ska returneras är ett valfritt argument som kan användas för att returnera längden på ett värde i dokumentet.
Exempel 1 – Tomt objekt
Här är ett JSON-dokument som inte innehåller något annat än ett tomt objekt.
SELECT JSON_LENGTH('{}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 0 | +--------+
Exempel 2 – Objekt med data
Och här är vad som händer om vi lägger till data.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 1 | +--------+
Detta returnerar 1
eftersom objektet innehåller en medlem. Om vi lägger till en andra medlem händer det här:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 2 | +--------+
Exempel 3 – Arrayer
Längden på en array är antalet element som den innehåller.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Detta är sant, även om ett av elementen innehåller sin egen array (eller objekt).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Exempel 4 – Sökvägsargumentet
Vi kan tillhandahålla en valfri path
argument för att returnera längden på en given sökväg i dokumentet.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
I det här fallet returnerar vi längden på Person
objekt, som innehåller tre medlemmar.
Om vi begränsar det till bara en av dessa medlemmar (säg Name
). medlem), får vi detta:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultat:
+--------+ | Result | +--------+ | 1 | +--------+
Men om vi begränsar det till Hobbies
array får vi detta:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultat:
+--------+ | Result | +--------+ | 2 | +--------+