Share via


JSON_ARRAY (Transact-SQL)

適用於:SQL Server 2022 (16.x) Azure SQL DatabaseAzure 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_array_value

是定義 JSON 陣列中元素值的運算式。

json_null_clause

當 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 函式輸出中所看到項目的詳細資訊,請查看下列文章:

範例

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