JSON_ARRAYAGG (Transact-SQL)

Gilt für: Azure SQL-Datenbank Azure SQL Managed Instance

Erstellt ein JSON-Array aus einer Aggregation von SQL-Daten oder -Spalten.

Verwenden Sie JSON_OBJECTAGG, um stattdessen ein JSON-Objekt aus einem Aggregat zu erstellen.

Hinweis

Sowohl json-Aggregatfunktionen JSON_OBJECTAGG als JSON_ARRAYAGG auch derzeit in der Vorschau für Azure SQL-Datenbank und Azure SQL verwaltete Instanz (konfiguriert mit der Always-up-up-to-date-Updaterichtlinie). .

Transact-SQL-Syntaxkonventionen

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>

Argumente

value_expression

Der Wertausdruck kann eine Spalte oder ein Ausdruck in einer Abfrage oder Konstanten/Literale sein.

json_null_clause

Optional. json_null_clause kann zum Steuern des Verhaltens der Funktion JSON_ARRAYAGG verwendet werden, wenn value_expression gleich NULL ist. Die Option NULL ON NULL konvertiert den SQL-NULL-Wert in einen JSON-Null-Wert, wenn der Wert des Elements im JSON-Array generiert wird. Die Option ABSENT ON NULL lässt das Element im JSON-Array aus, wenn der Wert NULL ist. Wenn nicht angegeben, ist ABSENT ON NULL der Standardwert.

order_by_clause

Optional. Die Reihenfolge der Elemente im resultierenden JSON-Array kann angegeben werden, um die Eingabezeilen an das Aggregat zu ordnen.

Beispiele

Beispiel 1

Im folgenden Beispiel wird ein leeres JSON-Array zurückgegeben.

SELECT JSON_ARRAYAGG(null);

Ergebnis

[]

Beispiel 2

Im folgenden Beispiel wird ein JSON-Array mit drei Elementen aus einem Resultset erstellt.

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

Ergebnis

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

Beispiel 3

Im folgenden Beispiel wird ein JSON-Array mit drei Elementen erstellt, die nach dem Wert der Spalte sortiert sind.

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

Ergebnis

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

Beispiel 4

Im folgenden Beispiel wird ein Ergebnis mit zwei Spalten zurückgegeben. Die erste Spalte enthält den Wert object_id. Die zweite Spalte enthält ein JSON-Array, das die Namen der Spalten enthält. Die Spalten im JSON-Array werden basierend auf dem Wert column_id sortiert.

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;

Ergebnis

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