JSON_ARRAYAGG (Transact-SQL)
platí pro:azure SQL Databasekoncový bod služby Sql Managed InstanceSQL Analytics a warehouse v Microsoft Fabric
Vytvoří pole JSON z agregace dat NEBO sloupců SQL.
Pokud chcete místo toho vytvořit objekt JSON z agregace, použijte JSON_OBJECTAGG.
Poznámka
agregační funkce json JSON_OBJECTAGG
i JSON_ARRAYAGG
jsou aktuálně ve verzi Preview pro Azure SQL Database, službu Azure SQL Managed Instance (nakonfigurovanou s Always-up-to-datemaktualizací) a službou Microsoft Fabric Data Warehouse.
Syntax
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>
Argumenty
value_expression
Výrazem hodnoty může být sloupec nebo výraz v dotazu nebo konstanty nebo literály.
json_null_clause
Volitelný.
json_null_clause lze použít k řízení chování funkce JSON_ARRAYAGG
, když je value_expressionNULL
. Možnost NULL ON NULL
při generování hodnoty elementu v poli JSON převede hodnotu SQL NULL
na hodnotu NULL JSON. Možnost ABSENT ON NULL
vynechá prvek v poli JSON, pokud je hodnota NULL
. Pokud tento parametr vynecháte, ABSENT ON NULL
je výchozí.
order_by_clause
Volitelný. Pořadí prvků ve výsledném poli JSON lze zadat tak, aby se vstupní řádky uspořádaly do agregace.
Příklady
Příklad 1
Následující příklad vrátí prázdné pole JSON.
SELECT JSON_ARRAYAGG(null);
výsledek
[]
Příklad 2
Následující příklad vytvoří pole JSON se třemi prvky ze sady výsledků.
SELECT JSON_ARRAYAGG( c1 )
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
výsledek
["c","b","a"]
Příklad 3
Následující příklad vytvoří pole JSON se třemi prvky seřazenými podle hodnoty sloupce.
SELECT JSON_ARRAYAGG( c1 ORDER BY c1)
FROM (
VALUES ('c'), ('b'), ('a')
) AS t(c1);
výsledek
["a","b","c"]
Příklad 4
Následující příklad vrátí výsledek se dvěma sloupci. První sloupec obsahuje hodnotu object_id
. Druhý sloupec obsahuje pole JSON obsahující názvy sloupců. Sloupce v poli JSON jsou seřazené na základě column_id
hodnoty.
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;
výsledek
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"] |