No MySQL, o
JSON_LENGTH() A função retorna o comprimento de um documento JSON. Ao chamar essa função, você fornece o documento JSON como argumento. Você também pode fornecer um argumento de caminho para retornar o comprimento de um valor dentro do documento.
Sintaxe
A sintaxe fica assim:
JSON_LENGTH(json_doc[, path])
Onde
json_doc é o documento JSON para o qual retornar a profundidade e path é um argumento opcional que pode ser usado para retornar o comprimento de um valor dentro do documento. Exemplo 1 – Objeto vazio
Aqui está um documento JSON que contém nada além de um objeto vazio.
SELECT JSON_LENGTH('{}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 0 | +--------+
Exemplo 2 – Objeto com dados
E aqui está o que acontece se adicionarmos dados.
SELECT JSON_LENGTH('{"Name": "Homer"}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Isso retorna
1 porque o objeto contém um membro. Se adicionarmos um segundo membro, eis o que acontece:SELECT JSON_LENGTH('{"Name": "Homer", "Stupid": true}') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+
Exemplo 3 – Matrizes
O comprimento de uma matriz é o número de elementos que ela contém.
SELECT JSON_LENGTH('[1, 2, 3]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Isso é verdade, mesmo que um dos elementos contenha seu próprio array (ou objeto).
SELECT JSON_LENGTH('[1, 2, [3, 4]]') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Exemplo 4 – O argumento do caminho
Podemos fornecer um
path opcional argumento para retornar o comprimento de um determinado caminho dentro do documento. SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person') 'Result';
Resultado:
+--------+ | Result | +--------+ | 3 | +--------+
Nesse caso, retornamos o comprimento da
Person objeto, que contém três membros. Se restringirmos a apenas um desses membros (digamos, o
Name membro), obtemos isso:SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Name') 'Result';
Resultado:
+--------+ | Result | +--------+ | 1 | +--------+
Mas se restringirmos aos
Hobbies matriz, obtemos isso:SET @data = '{
"Person": {
"Name": "Homer",
"Age": 39,
"Hobbies": ["Eating", "Sleeping"]
}
}';
SELECT JSON_LENGTH(@data, '$.Person.Hobbies') 'Result';
Resultado:
+--------+ | Result | +--------+ | 2 | +--------+