SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()


O SQLite json_group_array() function é uma função agregada que retorna uma matriz JSON composta por todos os valores na agregação.

Em outras palavras, ele constrói um array a partir dos valores fornecidos por seu argumento.

Sintaxe

json_group_array(X)

Onde X representa o(s) elemento(s) que a matriz resultante consistirá.

Exemplo


Aqui está um exemplo simples para demonstrar:
SELECT json_group_array( "Fritz" );

Resultado:
["Fritz"]

Podemos ver que um array foi retornado, com o valor que fornecemos.

No entanto, o verdadeiro poder dessa função é demonstrado em cenários que usam dados agregados (como nos exemplos de banco de dados abaixo). Afinal, poderíamos ter usado o json_array() função para o exemplo acima:
SELECT json_array( "Fritz" );

Resultado:
["Fritz"]

Como mencionado, o verdadeiro poder desta função está em lidar com dados agregados. Portanto, json_group_array() normalmente seria usado ao consultar um banco de dados.

Exemplo de banco de dados


Suponha que temos a seguinte tabela:
SELECT * FROM Pets;

Resultado:
+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Podemos ver que existem três colunas e podemos ver seus nomes.

Podemos usar o json_group_array() assim:
SELECT json_group_array(TypeId)
FROM Pets;

Resultado:
[3,1,2,4]

Aqui, criei um array que consiste em todos os TypeId valores.

Podemos dar um passo adiante e passar outra função JSON como argumento para json_group_array() .

Por exemplo, se quiséssemos produzir um objeto JSON para cada linha no banco de dados, poderíamos usar o json_object() função na mesa assim:
SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Resultado:
{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Podemos então usar o json_group_array() função para fornecer uma matriz externa:
SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Resultado:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

Agora, todos os documentos JSON que foram produzidos por json_object() são colocados em uma matriz que foi produzida por json_group_array() .