JSON_ARRAY (Transact-SQL)

適用於: SQL Server 2022 (16.x) Azure SQL Database

從零個或多個運算式建構 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_array_value 是定義 JSON 陣列中元素值的運算式。

當 value_expression 為 NULL 時,json_null_clause 可用來控制 JSON_OBJECT 函式的行為。 NULL ON NULL 選項會在於 JSON 陣列中產生元素值時,將 SQL NULL 值轉換成 JSON null 值。 如果值為 NULL,則 ABSENT ON NULL 選項會省略 JSON 陣列中的元素。 這個選項的預設值是 ABSENT ON NULL。

如需您在 JSON_ARRAY 函式輸出中所看到項目的詳細資訊,請查看下列文章:

傳回值

傳回 nvarchar(max) 類型的有效 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 null 值。

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

另請參閱

JSON 資料 (SQL Server)