I MySQL er JSON_LENGTH() funktion returnerer længden af et JSON-dokument.
Når du kalder denne funktion, angiver du JSON-dokumentet som et argument. Du kan også angive et sti-argument for at returnere længden af en værdi i dokumentet.
Syntaks
Syntaksen ser sådan ud:
JSON_LENGTH(json_doc[, path])
Hvor json_doc er det JSON-dokument, som dybden og path skal returneres for er et valgfrit argument, der kan bruges til at returnere længden af en værdi i dokumentet.
Eksempel 1 – Tomt objekt
Her er et JSON-dokument, der ikke indeholder andet end et tomt objekt.
SELECT JSON_LENGTH('{}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 0 | +--------+
Eksempel 2 – Objekt med data
Og her er, hvad der sker, hvis vi tilføjer data.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 1 | +--------+
Dette returnerer 1 fordi objektet indeholder et medlem. Hvis vi tilføjer et andet medlem, sker der her:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultat:
+--------+ | Result | +--------+ | 2 | +--------+
Eksempel 3 – Arrays
Længden af en matrix er antallet af elementer, den indeholder.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Dette er sandt, selvom et af elementerne indeholder sit eget array (eller objekt).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
Eksempel 4 – Stiargumentet
Vi kan tilbyde en valgfri path argument for at returnere længden af en given sti i dokumentet.
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultat:
+--------+ | Result | +--------+ | 3 | +--------+
I dette tilfælde returnerer vi længden af Person objekt, som indeholder tre medlemmer.
Hvis vi begrænser det til kun et af disse medlemmer (f.eks. Name). medlem), får vi dette:
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultat:
+--------+ | Result | +--------+ | 1 | +--------+
Men hvis vi begrænser det til Hobbies array, får vi dette:
SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultat:
+--------+ | Result | +--------+ | 2 | +--------+