JSON_ARRAYAGG (Transact-SQL)
適用於:Azure SQL DatabaseAzure SQL 受控實例SQL 分析端點和Microsoft網狀架構中的倉儲
從 SQL 資料或資料行的彙總建構 JSON 陣列。
若要改為從彙總建立 JSON 物件,請使用 JSON_OBJECTAGG。
注意
json 匯總函式 JSON_OBJECTAGG
和 JSON_ARRAYAGG
目前都處於 Azure SQL Database、Azure SQL 受控實例的預覽狀態(已設定 Always-up-to-date 更新原則],以及 Microsoft 網狀架構數據倉儲。
語法
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_expression 為 JSON_ARRAYAGG
時,json_null_clause 可用來控制 NULL
函數的行為。
NULL ON NULL
選項會在於 JSON 陣列中產生元素值時,將 SQL NULL
值轉換成 JSON null 值。 如果值為 ABSENT ON NULL
,則 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"] |