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 | +--------+