JSON_ARRAY(Transact-SQL)

适用于:Sql ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric仓库中的 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 函数的行为。 在生成 JSON 数组中的元素值时,选项 NULL ON NULL 将 SQL NULL 值转换为 JSON NULL 值。 如果值 ABSENT ON NULL,则 NULL 选项将省略 JSON 数组中的元素。 此选项的默认设置为 ABSENT ON NULL

返回值

返回 nvarchar(max) 类型的有效 JSON 数组字符串。 如果包含该 RETURNING json 选项,则 JSON 数组将作为 json 类型返回。

若要了解 JSON_ARRAY 函数的输出内容,请查看以下文章:

Article Description
FOR JSON 如何将 SQL Server 数据类型转换为 JSON 数据类型 JSON_ARRAY 函数使用 FOR JSON 本文中描述的规则,在 JSON 数组输出中把 SQL 数据类型转换成 JSON 类型。
FOR JSON 如何转义特殊字符和控制字符 JSON_ARRAY 函数按照这篇 FOR JSON 文章中描述的方式在 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 NULLNULL因此其中一个输入中的值不会转换为 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 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]