Поделиться через


JSON_ARRAYAGG (Transact-SQL)

Применимо к:База данных SQL Azure

Создает массив JSON из агрегирования данных ИЛИ столбцов SQL.

Чтобы создать объект JSON из агрегата, используйте JSON_OBJECTAGG.

Примечание.

В настоящее время агрегатные функции JSON_OBJECTAGG JSON и JSON_ARRAYAGG доступны в предварительной версии для База данных SQL Azure.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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>

Аргументы

value_expression

Выражение значения может быть столбцом или выражением в запросе или константах или литералах.

json_null_clause

Необязательно. json_null_clause можно использовать для управления поведением JSON_ARRAYAGG функции при value_expressionNULL. NULL ON NULL Параметр преобразует значение SQL NULL в значение JSON NULL при создании значения элемента в массиве JSON. ABSENT ON NULL Параметр исключает элемент в массиве JSON, если значение равноNULL. Если опущено, ABSENT ON NULL значение по умолчанию.

order_by_clause

Необязательно. Порядок элементов в результирующем массиве JSON можно указать для упорядочивания входных строк в агрегат.

Примеры

Пример 1

В следующем примере возвращается пустой массив JSON.

SELECT JSON_ARRAYAGG(null);

Результат

[]

Пример 2

В следующем примере создается массив JSON с тремя элементами из результирующий набор.

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

Результат

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

Пример 3

В следующем примере создается массив JSON с тремя элементами, упорядоченными по значению столбца.

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

Результат

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

Пример 4

В следующем примере возвращается результат с двумя столбцами. Первый столбец содержит object_id значение. Второй столбец содержит массив JSON, содержащий имена столбцов. Столбцы в массиве JSON упорядочены на 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;

Результат

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