適用於:SQL Server
Azure SQL Database
Azure SQL 受控實例
Microsoft網狀架構
倉儲中的 SQL 分析 Microsoft端點Microsoft Fabric
從零個或多個運算式建構 JSON 陣列文字。
語法
JSON_ARRAY ( [ <json_array_value> [ , ...n ] ] [ <json_null_clause> ] [ RETURNING json ] )
<json_array_value> ::= value_expression
<json_null_clause> ::=
NULL ON NULL
| ABSENT ON NULL
引數
json_array_value
定義 JSON 陣列中元素值的運算式。
json_null_clause
當 JSON_OBJECTvalue_expression時,可用來控制 NULL 函式的行為。
NULL ON NULL 選項會在於 JSON 陣列中產生元素值時,將 SQL NULL 值轉換成 JSON NULL 值。 如果值 ABSENT ON NULL,則選項 NULL 會省略 JSON 陣列中的專案。 這個選項的預設值是 ABSENT ON NULL。
傳回值
傳回 nvarchar(max) 類型的有效 JSON 陣列字串。 如果包含選項 RETURNING json ,則會以 json 類型傳回 JSON 陣列。
如需您在 JSON_ARRAY 函式輸出中所看到項目的詳細資訊,請查看下列文章:
| 文章 | Description |
|---|---|
| FOR JSON 如何將 SQL Server 數據類型轉換為 JSON 數據類型 |
JSON_ARRAY 函式使用本 FOR JSON 文中描述的規則,在 JSON 陣列輸出中,將 SQL 資料類型轉換為 JSON 類型。 |
| FOR JSON 如何跳脫特殊字元和控制字元 |
JSON_ARRAY 函式會逸出特殊字元,並在 JSON 輸出中代表控制字元,如本 FOR JSON 文中所描述。 |
範例
範例 1
下列範例會傳回空白 JSON 陣列。
SELECT JSON_ARRAY();
結果
[]
範例 2
下列範例會傳回具有四個元素的 JSON 陣列。
SELECT JSON_ARRAY('a', 1, 'b', 2);
結果
["a",1,"b",2]
範例 3
下列範例會傳回具有三個元素的 JSON 陣列,因為其中一個輸入值 NULL。 由於省略了 json_null_clause ,且此選項的預設值是 ABSENT ON NULL, NULL 因此其中一個輸入中的值不會轉換為 JSON 空值。
SELECT JSON_ARRAY('a', 1, 'b', NULL);
結果
["a",1,"b"]
範例 4
下列範例會傳回具有四個元素的 JSON 陣列。 指定 NULL ON NULL 選項,讓輸入中的任何 SQL NULL 值都會轉換成 JSON 陣列中的 JSON Null 值。
SELECT JSON_ARRAY('a', 1, NULL, 2 NULL ON NULL);
結果
["a",1,null,2]
範例 5
下列範例會傳回具有兩個元素的 JSON 陣列。 一個元素包含 JSON 字串,另一個元素則包含 JSON 物件。
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1));
結果
["a",{"name":"value","type":1}]
範例 6
下列範例會傳回具有三個元素的 JSON 陣列。 一個元素包含 JSON 字串,另一個元素包含 JSON 物件,另一個元素則包含 JSON 陣列。
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1), JSON_ARRAY(1, NULL, 2 NULL ON NULL));
結果
["a",{"name":"value","type":1},[1,null,2]]
範例 7
下列範例會傳回 JSON 陣列,其中包含指定為變數或 SQL 運算式的輸入。
DECLARE @id_value AS NVARCHAR (64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID));
結果
[1,"4BEA4F9F-D169-414F-AF99-9270FDB2EA62",55]
範例 8
下列範例在查詢中每個資料列會傳回一個 JSON 陣列。
SELECT s.session_id,
JSON_ARRAY(s.host_name, s.program_name, s.client_interface_name)
FROM sys.dm_exec_sessions AS s
WHERE s.is_user_process = 1;
結果
| session_id | info |
|---|---|
| 52 | ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"] |
| 55 | ["WIN16-VM","Microsoft SQL Server Management Studio - Query",".Net SqlClient Data Provider"] |
| 56 | ["WIN19-VM","SQLServerCEIP",".Net SqlClient Data Provider"] |
範例 9
下列範例會傳回 JSON 陣列作為 json 類型。
SELECT JSON_ARRAY(1 RETURNING JSON);
結果
[1]