sql >> Base de Datos >  >> RDS >> SQLite

SQLiteJSON_GROUP_ARRAY()

El json_group_array() de SQLite La función es una función agregada que devuelve una matriz JSON compuesta por todos los valores de la agregación.

En otras palabras, construye una matriz a partir de los valores proporcionados por su argumento.

Sintaxis

json_group_array(X)

Donde X representa el/los elemento/s de los que constará la matriz resultante.

Ejemplo

Aquí hay un ejemplo simple para demostrarlo:

SELECT json_group_array( "Fritz" );

Resultado:

["Fritz"]

Podemos ver que se devolvió una matriz, con el valor que proporcionamos.

Sin embargo, el verdadero poder de esta función se demuestra en escenarios que usan datos agregados (como en los ejemplos de bases de datos a continuación). Después de todo, podríamos haber usado el json_array() función para el ejemplo anterior:

SELECT json_array( "Fritz" );

Resultado:

["Fritz"]

Como se mencionó, el verdadero poder de esta función está en el manejo de datos agregados. Por lo tanto, json_group_array() normalmente se usaría al consultar una base de datos.

Ejemplo de base de datos

Supongamos que tenemos la siguiente tabla:

SELECT * FROM Pets;

Resultado:

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

Podemos ver que hay tres columnas y podemos ver sus nombres.

Podemos usar json_group_array() así:

SELECT json_group_array(TypeId)
FROM Pets;

Resultado:

[3,1,2,4]

Aquí, creé una matriz que consta de todos los TypeId valores.

Podemos ir un paso más allá y pasar otra función JSON como argumento a json_group_array() .

Por ejemplo, si quisiéramos producir un objeto JSON para cada fila en la base de datos, podríamos usar json_object() función en la tabla de esta manera:

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}

Entonces podemos usar json_group_array() función para proporcionar una 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}]

Ahora, todos los documentos JSON producidos por json_object() están incluidos en una matriz que fue producida por json_group_array() .