Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

JSON_LENGTH() – Retorna o comprimento de um documento JSON no MySQL


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