Compartilhar via


JSON_ARRAYAGG (Transact-SQL)

Aplica-se a:Banco de Dados SQL do Azure

Constrói uma matriz JSON de uma agregação de colunas ou dados SQL.

Para criar um objeto JSON de um agregado, use JSON_OBJECTAGG.

Observação

Atualmente, ambas as funções JSON_OBJECTAGG json agregam e JSON_ARRAYAGG estão disponíveis na visualização do Banco de Dados SQL do Azure.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

A expressão de valor pode ser uma coluna ou uma expressão em uma consulta ou constantes/literais.

json_null_clause

Opcional. json_null_clause pode ser usado para controlar o comportamento da função JSON_ARRAYAGG quando value_expression é NULL. A opção NULL ON NULL converte o valor SQL NULL em um valor nulo JSON ao gerar o valor do elemento na matriz JSON. A opção ABSENT ON NULL omite o elemento na matriz JSON se o valor é NULL. Se omitido, ABSENT ON NULL é o padrão.

order_by_clause

Opcional. A ordem dos elementos na matriz JSON resultante pode ser especificada para ordenar as linhas de entrada da agregação.

Exemplos

Exemplo 1

O exemplo a seguir retorna uma matriz JSON vazia.

SELECT JSON_ARRAYAGG(null);

Resultado

[]

Exemplo 2

O exemplo a seguir cria uma matriz JSON com três elementos de um conjunto de resultados.

SELECT JSON_ARRAYAGG( c1 )
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Resultado

["c","b","a"]

Exemplo 3

O exemplo a seguir cria uma matriz JSON com três elementos ordenados pelo valor da coluna.

SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
    VALUES ('c'), ('b'), ('a')
) AS t(c1);

Resultado

["a","b","c"]

Exemplo 4

O exemplo a seguir retorna um resultado com duas colunas. A primeira coluna contém o valor object_id. A segunda coluna contém uma matriz JSON com os nomes das colunas. As colunas na matriz JSON são ordenadas com base no 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 column_list
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"]