Sdílet prostřednictvím


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.

Transact-SQL konvence syntaxe

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