JSON_ARRAYAGG (Transact-SQL)
Si applica a: database SQL di Azure
Costruisce una matrice JSON da un'aggregazione di dati o colonne SQL.
Per creare invece un oggetto JSON da un'aggregazione, usare JSON_OBJECTAGG.
Nota
Attualmente, sono disponibili in anteprima per database SQL di Azure entrambe le funzioni di aggregazione json JSON_OBJECTAGG
e JSON_ARRAYAGG
.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
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>
Argomenti
value_expression
L'espressione valore può essere una colonna o un'espressione in una query o costanti/valori letterali.
json_null_clause
Facoltativo. json_null_clause può essere usato per controllare il comportamento della funzione JSON_ARRAYAGG
quando value_expression è NULL
. L'opzione NULL ON NULL
converte il valore SQL NULL
in un valore JSON null durante la generazione del valore dell'elemento nella matrice JSON. Se il valore è ABSENT ON NULL
, l'opzione NULL
ometterà l'elemento nella matrice JSON. Se omesso, ABSENT ON NULL
è predefinito.
order_by_clause
Facoltativo. È possibile specificare l'ordine degli elementi nella matrice JSON risultante per ordinare le righe di input all'aggregazione.
Esempi
Esempio 1
L'esempio seguente restituisce una matrice JSON vuota.
SELECT JSON_ARRAYAGG(null);
Risultato
[]
Esempio 2
L'esempio seguente costruisce una matrice JSON con tre elementi di un set di risultati.
SELECT JSON_ARRAYAGG( c1 )
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Risultato
["c","b","a"]
Esempio 3
Il seguente esempio costruisce una matrice JSON con tre elementi ordinati in base al valore della colonna.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
Risultato
["a","b","c"]
Esempio 4
L'esempio seguente restituisce un set di risultati con due colonne. La prima colonna contiene il valore object_id
. La seconda colonna contiene una matrice JSON contenente i nomi delle colonne. Le colonne nella matrice JSON vengono ordinate in base al valore 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;
Risultato
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"] |