JSON_ARRAYAGG (Transact-SQL)
Se aplica a: Azure SQL Database
Construye una matriz JSON a partir de una agregación de datos o columnas SQL.
Para crear un objeto JSON a partir de un agregado, use JSON_OBJECTAGG.
Nota:
Actualmente, tanto las funciones de agregado json JSON_OBJECTAGG
como JSON_ARRAYAGG
están disponibles en versión preliminar para la base de datos de Azure SQL.
Convenciones de sintaxis de Transact-SQL
Sintaxis
JSON_ARRAYAGG (value_expression [ order_by_clause ] [ json_null_clause ] )
json_null_clause ::= NULL ON NULL | ABSENT ON NULL
order_by_clause ::= ORDER BY <column_list>
Argumentos
value_expression
La expresión de valor puede ser una columna o expresión en una consulta o constantes o literales.
json_null_clause
Opcional. json_null_clause se puede usar para controlar el comportamiento de la función JSON_ARRAYAGG
cuando value_expression es NULL
. La opción NULL ON NULL
convierte el valor NULL
de SQL en un valor NULL de JSON al generar el valor del elemento en la matriz JSON. La opción ABSENT ON NULL
omitirá el elemento de la matriz JSON si el valor es NULL
. Si se omite, ABSENT ON NULL
es el valor predeterminado.
order_by_clause
Opcional. El orden de los elementos de la matriz JSON resultante se puede especificar para ordenar las filas de entrada al agregado.
Ejemplos
Ejemplo 1
En el siguiente ejemplo se devuelve una matriz JSON vacía.
SELECT JSON_ARRAYAGG(null);
Resultado
[]
Ejemplo 2
En el siguiente ejemplo se construye una matriz JSON con tres elementos de un conjunto de resultados.
SELECT JSON_ARRAYAGG( c1 )
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Resultado
["c","b","a"]
Ejemplo 3
En el ejemplo siguiente se construye una matriz JSON con tres elementos ordenados por el valor de la columna.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Resultado
["a","b","c"]
Ejemplo 4
En el ejemplo siguiente se devuelve un conjunto de resultados con dos columnas. La primera columna contiene el valor object_id
. La segunda columna contiene una matriz JSON que contiene los nombres de las columnas. Las columnas de la matriz JSON se ordenan en función del valor column_id
.
SELECT TOP(5) c.object_id, JSON_ARRAYAGG(c.name ORDER BY c.column_id) AS column_list
FROM sys.columns AS c
GROUP BY c.object_id;
Resultado
object_id | lista_de_columnas |
---|---|
3 | ["rsid","rscolid","hbcolid","rcmodified","ti","cid","ordkey","maxinrowlen","status","offset","nullbit","bitpos","colguid","ordlock"] |
5 | ["rowsetid","ownertype","idmajor","idminor","numpart","status","fgidfs","rcrows","cmprlevel","fillfact","maxnullbit","maxleaf","maxint","minleaf","minint","rsguid","lockres","scope_id"] |
6 | ["id","subid","partid","version","segid","cloneid","rowsetid","dbfragid","status"] |
7 | ["auid","type","ownerid","status","fgid","pgfirst","pgroot","pgfirstiam","pcused","pcdata","pcreserved"] |
8 | ["status","fileid","name","filename"] |