JSON_ARRAY (Transact-SQL)
適用於:SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體
從零個或多個運算式建構 JSON 陣列文字。
JSON_ARRAY ( [ <json_array_value> [,...n] ] [ <json_null_clause> ] )
<json_array_value> ::= value_expression
<json_null_clause> ::=
NULL ON NULL
| ABSENT ON NULL
是定義 JSON 陣列中元素值的運算式。
當 value_expression 為 NULL 時,其可用來控制 JSON_OBJECT
函數的行為。 NULL ON NULL
選項會在於 JSON 陣列中產生元素值時,將 SQL NULL
值轉換成 JSON null
值。 如果值為 NULL,則 ABSENT ON NULL
選項會省略 JSON 陣列中的元素。 這個選項的預設值是 ABSENT ON NULL
。
傳回 nvarchar(max) 類型的有效 JSON 陣列字串。
如需您在 JSON_ARRAY
函式輸出中所看到項目的詳細資訊,請查看下列文章:
FOR JSON 如何將 SQL Server 資料類型轉換為 JSON 資料類型 (SQL Server)
JSON_ARRAY
函式使用本FOR JSON
文中描述的規則,在 JSON 陣列輸出中,將 SQL 資料類型轉換為 JSON 類型。FOR JSON 如何逸出特殊字元和控制字元 (SQL Server)
JSON_ARRAY
函式會逸出特殊字元,並在 JSON 輸出中代表控制字元,如本FOR JSON
文中所描述。
下列範例會傳回空白 JSON 陣列。
SELECT JSON_ARRAY();
結果
[]
下列範例會傳回具有四個元素的 JSON 陣列。
SELECT JSON_ARRAY('a', 1, 'b', 2)
結果
["a",1,"b",2]
下列範例會傳回具有三個元素的 JSON 陣列,因為其中一個輸入值為 NULL。 由於省略 json_null_clause,而且此選項的預設值為 ABSENT ON NULL,因此其中一個輸入中的 NULL 值不會轉換成 JSON null 值。
SELECT JSON_ARRAY('a', 1, 'b', NULL)
結果
["a",1,"b"]
下列範例會傳回具有四個元素的 JSON 陣列。 指定 NULL ON NULL 選項,讓輸入中的任何 SQL NULL 值都會轉換成 JSON 陣列中的 JSON null 值。
SELECT JSON_ARRAY('a', 1, NULL, 2 NULL ON NULL)
結果
["a",1,null,2]
下列範例會傳回具有兩個元素的 JSON 陣列。 一個元素包含 JSON 字串,另一個元素則包含 JSON 物件。
SELECT JSON_ARRAY('a', JSON_OBJECT('name':'value', 'type':1))
結果
["a",{"name":"value","type":1}]
下列範例會傳回具有三個元素的 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]]
下列範例會傳回 JSON 陣列,其中包含指定為變數或 SQL 運算式的輸入。
DECLARE @id_value nvarchar(64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID));
結果
[1,"4BEA4F9F-D169-414F-AF99-9270FDB2EA62",55]
下列範例在查詢中每個資料列會傳回一個 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"] |