Partager via


JSON_OBJECTAGG (Transact-SQL)

S’applique à : Azure SQL Database

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

Les paires clé/valeur peuvent être spécifiées en tant que valeurs d’entrée, colonne, références de variables.

Pour créer un tableau JSON à partir d’un agrégat, utilisez JSON_ARRAYAGG.

Remarque

Actuellement, les deux fonctions d’agrégation json JSON_OBJECTAGG et JSON_ARRAYAGG sont disponibles en préversion pour la base de données Azure SQL.

Conventions de la syntaxe Transact-SQL

Syntaxe

JSON_OBJECTAGG ( json_key_value [ json_null_clause ] )
 
json_key_value ::= <json_name> : <value_expression> 

json_null_clause ::= NULL ON NULL | ABSENT ON NULL 

Arguments

json_key_value

La paire clé/valeur de l'objet JSON.

json_null_clause

facultatif. Omettez la propriété entière d’un objet si la valeur est NULL ou utilisez JSON null comme valeur de propriété. En cas d’omission, NULL ON NULL est la valeur par défaut.

Exemples

Exemple 1

L’exemple suivant renvoie un objet JSON avec une clé et une valeur nulle.

select JSON_OBJECTAGG ( 'key':null )

Résultat

{"key":null}

Exemple 2

L’exemple suivant construit un objet JSON avec trois propriétés à partir d’un jeu de résultats.

SELECT JSON_OBJECTAGG( c1:c2 )
FROM (
    VALUES('key1', 'c'), ('key2', 'b'), ('key3','a')
) AS t(c1, c2);

Résultat

{"key1":"c","key2":"b","key3":"a"}

Exemple 3

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 objet JSON où la clé est le nom de la colonne, et column_id la valeur.

SELECT TOP(5) c.object_id, JSON_OBJECTAGG(c.name:c.column_id) AS columns
  FROM sys.columns AS c
 GROUP BY c.object_id;

Résultat

object_id column_list
3 {"bitpos":12,"cid":6,"colguid":13,"hbcolid":3,"maxinrowlen":8,"nullbit":11,"offset":10,"ordkey":7,"ordlock":14,"rcmodified":4,"rscolid":2,"rsid":1,"status":9,"ti":5}
5 {"cmprlevel":9,"fgidfs":7,"fillfact":10,"idmajor":3,"idminor":4,"lockres":17,"maxint":13,"maxleaf":12,"maxnullbit":11,"minint":15,"minleaf":14,"numpart":5,"ownertype":2,"rcrows":8,"rowsetid":1,"rsguid":16,"scope_id":18,"status":6}
6 {"cloneid":6,"dbfragid":8,"id":1,"partid":3,"rowsetid":7,"segid":5,"status":9,"subid":2,"version":4}
7 {"auid":1,"fgid":5,"ownerid":3,"pcdata":10,"pcreserved":11,"pcused":9,"pgfirst":6,"pgfirstiam":8,"pgroot":7,"status":4,"type":2}
8 {"fileid":2,"filename":4,"name":3,"status":1}