SQL JSON_ARRAY() 函数

SQL JSON_ARRAY() 函数

SQL JSON_ARRAY() 函数接受一个表达式或逗号分隔的表达式列表,并返回一个包含这些值的 JSON 数组。在 SELECT 语句中,可以与 JSON ARRAY 结合使用多种类型的 select-items。在允许指定 JSON ARRAY 的其他 SQL 函数的位置,如 WHERE 子句中,也可以使用 JSON ARRAY。

返回的每个数组元素的值,JSON ARRAY 作为字符串(在其周围有双引号)或数字返回。返回的数字格式是规范的。作为字面量,返回的是用双引号括起来的数字字符串。对于其他所有数据类型,如日期和$List,返回值是一个字符串。JSON_ARRAY 不支持 COUNT(*) 聚合函数。

语法

以下是 SQL JSON_ARRAY() 函数的语法 –

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 - 用于控制JSON_OBJECT函数在值表达式为NULL时的行为。选项NULL ON NULL将SQL NULL值转换为JSON NULL,生成JSON_ARRAY的值。如果值为NULL,则选项ABSENT ON NULL将从JSON数组中省略该元素。此选项的默认设置为”Absent on Null”。

示例

使用以下查询检索空的JSON数组 –

SELECT JSON_ARRAY() AS Result;

输出

当我们执行上述查询时,输出结果如下所示 –

+------------------------------------+
|                              Result|
+------------------------------------+
|                                []  |
+------------------------------------+

示例

通过以下查询语句,让我们检索出在表达式中传递的所有JSON_ARRAY值:

SELECT JSON_ARRAY('abc', 14, 'bcd', 3) AS Result;

输出

当我们执行以上查询时,得到的输出如下所示−

+------------------------------------+
|                              Result|
+------------------------------------+
|                 ["abc",14,"bcd",3] |
+------------------------------------+

示例

让我们看一个使用NULL作为输入值的另一个示例,这将使空值无效,并在JSON_ARRAY中返回其他输入值。由于忽略了json_null_clause并且默认为ABSENT ON NULL,因此NULL值不会转换为JSON null值 –

SELECT JSON_ARRAY('abc', 14, 'bcd', NULL) AS Result;

输出

当我们执行上述查询时,输出结果如下所示−

+------------------------------------+
|                              Result|
+------------------------------------+
|                   ["abc",14,"bcd"] |
+------------------------------------+

示例

让我们考虑另一种情况,我们将传递NULL ON NULL选项,该选项有助于将任何SQL NULL值转换为JSON null值,并使用以下查询检索输出:

SELECT JSON_ARRAY('aBC', 14, NULL, 3 NULL ON NULL) AS Result;

输出

在执行上述查询时,输出如下显示 –

+------------------------------------+
|                              Result|
+------------------------------------+
|                  ["aBC",14,null,3] |
+------------------------------------+

示例

让我们来考虑另一个示例,我们将使用以下查询来检索包含两个元素(包含JSON字符串)和另一个元素为JSON对象的JSON_ARRAY。

SELECT JSON_ARRAY('ABC', JSON_OBJECT('car':'RX100', 'type':2)) AS Result;

输出

执行上述查询后,输出显示如下:

+------------------------------------+
|                              Result|
+------------------------------------+
|   ["ABC",{"car":"RX100","type":2}] |
+------------------------------------+

示例

考虑另一种情况,我们将使用以下查询检索包含三个元素的JSON_ARRAY,其中包含JSON字符串、JSON对象和另一个包含JSON数组的元素。

SELECT JSON_ARRAY('TP', JSON_OBJECT('course':'HTML', 'type':2), JSON_ARRAY(145, null, 6 NULL ON NULL)) AS Result;

输出

执行上述查询后,输出结果如下所示 –

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|["TP",{"course":"HTML","type":2},[145,null,6]]|
+----------------------------------------------+

示例

让我们来看一个示例,我们将使用以下查询来将输入指定为变量或SQL表达式−

DECLARE @work varchar(64) = NEWID();
SELECT JSON_ARRAY(1, @work, (SELECT @@SPID)) AS Result;

输出

上述查询的输出如下所示:

+----------------------------------------------+
|                                       Result |
+----------------------------------------------+
|[1,"1DAC88DD-BE4E-45C7-BEA1-6FAF3EE86EE0",73] |
+----------------------------------------------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程