Partilhar via


JSON_ARRAYAGG (Transact-SQL)

Aplica-se a: Banco de Dados SQL do Azure Instância Gerenciada de 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

Ambas as funções agregadas json estão JSON_ARRAYAGG atualmente em versão prévia para o Banco de Dados SQL do Azure e a Instância Gerenciada de SQL do Azure (configuradas com a política de atualização Sempre atualizadaJSON_OBJECTAGG). .

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"]