Partager via


JSON_ARRAYAGG (Transact-SQL)

S’applique à : Azure SQL Database Azure SQL Managed Instance

Construit un tableau JSON à partir d’une agrégation de données ou de colonnes SQL.

Pour créer un objet JSON à partir d’un agrégat, utilisez JSON_OBJECTAGG.

Remarque

Les fonctions JSON_OBJECTAGG d’agrégation json et JSON_ARRAYAGG sont actuellement en préversion pour Azure SQL Database et Azure SQL Managed Instance (configurées avec la stratégie de mise à jour Always-up-à-date). .

Conventions de la syntaxe Transact-SQL

Syntaxe

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>

Arguments

value_expression

L’expression de valeur peut être une colonne ou une expression dans une requête ou des constantes/littéraux.

json_null_clause

facultatif. json_null_clause peut être utilisé pour contrôler le comportement de la fonction JSON_ARRAYAGG quand value_expression est NULL. L’option NULL ON NULL convertit la valeur NULL SQL en valeur null JSON lors de la génération de la valeur de l’élément dans le tableau JSON. L’option ABSENT ON NULL omet l’élément dans le tableau JSON si la valeur est NULL. En cas d’omission, ABSENT ON NULL est la valeur par défaut.

order_by_clause

facultatif. L’ordre des éléments dans le tableau JSON résultant peut être spécifié pour classer les lignes d’entrée dans l’agrégat.

Exemples

Exemple 1

L’exemple suivant retourne un tableau JSON vide.

SELECT JSON_ARRAYAGG(null);

Résultat

[]

Exemple 2

L'exemple suivant construit un tableau JSON avec trois éléments à partir d'un jeu de résultats.

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

Résultat

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

Exemple 3

L’exemple suivant construit un tableau JSON avec trois éléments classés par la valeur de la colonne.

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

Résultat

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

Exemple 4

L'exemple suivant renvoie un résultat avec deux colonnes. La première colonne contient la valeur object_id. La deuxième colonne contient un tableau JSON contenant les noms des colonnes. Les colonnes du tableau JSON sont classées en fonction de la valeur 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;

Résultat

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