In MySQL, il JSON_LENGTH()
la funzione restituisce la lunghezza di un documento JSON.
Quando chiami questa funzione, fornisci il documento JSON come argomento. Puoi anche fornire un argomento di percorso per restituire la lunghezza di un valore all'interno del documento.
Sintassi
La sintassi è questa:
JSON_LENGTH(json_doc[, path])
Dove json_doc
è il documento JSON per il quale restituire la profondità e path
è un argomento facoltativo che può essere utilizzato per restituire la lunghezza di un valore all'interno del documento.
Esempio 1 – Oggetto vuoto
Ecco un documento JSON che non contiene altro che un oggetto vuoto.
SELECT JSON_LENGTH('{}') 'Result';
Risultato:
+--------+ | Result | +--------+ | 0 | +--------+
Esempio 2 – Oggetto con dati
Ed ecco cosa succede se aggiungiamo dati.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Risultato:
+--------+ | Result | +--------+ | 1 | +--------+
Questo restituisce 1
perché l'oggetto contiene un membro. Se aggiungiamo un secondo membro, ecco cosa succede:
SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Risultato:
+--------+ | Result | +--------+ | 2 | +--------+
Esempio 3 – Matrici
La lunghezza di un array è il numero di elementi che contiene.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Risultato:
+--------+ | Result | +--------+ | 3 | +--------+
Questo è vero, anche se uno degli elementi contiene il proprio array (o oggetto).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Risultato:
+--------+ | Result | +--------+ | 3 | +--------+
Esempio 4 – L'argomento del percorso
Possiamo fornire un path
opzionale argomento per restituire la lunghezza di un determinato percorso all'interno del documento.
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Risultato:
+--------+ | Result | +--------+ | 3 | +--------+
In questo caso restituiamo la lunghezza della Person
oggetto, che contiene tre membri.
Se lo restringiamo a uno solo di quei membri (ad esempio, il Name
membro), otteniamo questo:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Risultato:
+--------+ | Result | +--------+ | 1 | +--------+
Ma se lo restringiamo a Hobbies
array, otteniamo questo:
SET @data = '{ "Person": { "Name": "Homer", "Age": 39, "Hobbies": ["Eating", "Sleeping"] } }'; SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Risultato:
+--------+ | Result | +--------+ | 2 | +--------+