共用方式為


JSON_ARRAYAGG (Transact-SQL)

適用於:Azure SQL 資料庫

從 SQL 資料或資料行的彙總建構 JSON 陣列。

若要改為從彙總建立 JSON 物件,請使用 JSON_OBJECTAGG

注意

目前,json 聚合函數JSON_OBJECTAGGJSON_ARRAYAGG 都可供 Azure SQL 資料庫 預覽。

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

選擇性。 當 value_expressionNULL 時,json_null_clause 可用來控制 JSON_ARRAYAGG 函數的行為。 NULL ON NULL 選項會在於 JSON 陣列中產生元素值時,將 SQL NULL 值轉換成 JSON null 值。 如果值為 NULL,則 ABSENT ON NULL 選項會省略 JSON 陣列中的元素。 如果省略,則 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"]