Oracle JSON_ARRAY() 函数使用指南

Oracle JSON_ARRAY() 是一个内置函数,它将每个输入为一个 JSON 值,并返回一个包含这些 JSON 值的 JSON 数组。

Oracle JSON_ARRAY() 语法

这里是 Oracle JSON_ARRAY() 函数的语法:

JSON_ARRAY
  ( expr [ FORMAT JSON ] [, expr [ FORMAT JSON ] ]...
   [ JSON_on_null_clause ] [ JSON_returning_clause ]
   [ STRICT ]  )

参数

expr

必需的。 您可以指定任何 SQL 表达式,该表达式将求值为 JSON 对象、JSON 数组、数值文本、文本文本、日期、时间戳或 null。该函数将数值文本转换为 JSON 数字值,将文本文本转换为 JSON 字符串值。日期和时间戳数据类型以 ISO 8601 日期格式的 JSON 字符串打印在生成的 JSON 对象或数组中。

FORMAT JSON

可选的。您可以指定 FORMAT JSON,以指示输入字符串是 JSON,并且因此不会在输出中引用。

JSON_on_null_clause

可选的。您可以使用此子句指定当 expr 求值为 null 时此函数的行为。您可以使用以下两个子句:

  • NULL ON NULL - 如果指定此子句,则函数返回 JSON null 值。
  • ABSENT ON NULL - 如果指定此子句,则函数从 JSON 数组中省略该值。这是默认值。
JSON_returning_clause

可选的。 您可以使用此子句指定返回值的类型。请使用以下值中的一个:

  • VARCHAR2,指定大小为字节或字符数。默认是字节。如果省略此子句或指定没有指定 size 值的子句,则 JSON_ARRAY 返回一个类型为 VARCHAR2(4000) 的字符字符串。请注意,在 SQL 的其他位置指定 VARCHAR2 数据类型时,您需要指定一个大小。但是,在 JSON_returning_clause 中,您可以省略大小。
  • CLOB,以返回包含单字节或多字节字符的字符大对象。
  • BLOB,以返回 AL32UTF8 字符集的二进制大对象。
STRICT

可选的。指定 STRICT 子句以验证 JSON 生成函数的输出是否为正确的 JSON。如果检查失败,则会引发语法错误。

返回值

Oracle JSON_ARRAY() 函数返回一个 JSON 数组,它包含每个输入参数转为的 JSON 值。

如果您只提供一个 NULL 参数, JSON_ARRAY() 将返回空数组。

Oracle JSON_ARRAY() 示例

这里有几个展示了 Oracle JSON_ARRAY() 函数用法的示例。

基本用法

下面的示例通过几个数字构建一个 JSON 数组:

SELECT JSON_ARRAY(1234)
FROM dual;

输出:

JSON_ARRAY(1,2,3,4)
______________________
[1,2,3,4]

下面的示例通过几个字符串构建一个 JSON 数组:

SELECT JSON_ARRAY('a', 'abc')
FROM dual;

输出:

JSON_ARRAY('A','ABC')
________________________
["a","abc"]

FORMAT JSON

下面的示例将一个 JSON 数组和一个 JSON 对象作为输入参数:

SELECT JSON_ARRAY('[1,2,3]', '{"x":1}')
FROM dual;

输出:

JSON_ARRAY('[1,2,3]','{"X":1}')
__________________________________
["[1,2,3]","{\"x\":1}"]

您发现他们都被引用起来,这并不是您希望的样子。 您可以使用 FORMAT JSON 子句解决这个问题:

SELECT JSON_ARRAY('[1,2,3]' FORMAT JSON, '{"x":1}' FORMAT JSON)
FROM dual;

输出:

JSON_ARRAY('[1,2,3]'FORMATJSON,'{"X":1}'FORMATJSON)
______________________________________________________
[[1,2,3],{"x":1}]

NULL 参数

Oracle JSON_ARRAY() 函数允许您是使用 ON NULL 子句指定对 NULL 参数的处理方式。下面的示例展示了两种处理 NULL 参数的方式:

SELECT
    JSON_ARRAY(12, null, 3) "Default",
    JSON_ARRAY(12, null, 3 NULL ON NULL) "NULL ON NULL",
    JSON_ARRAY(12, null, 3 ABSENT ON NULL) "ABSENT ON NULL"
FROM dual;

输出:

Default    NULL ON NULL    ABSENT ON NULL
__________ _______________ _________________
[1,2,3]    [1,2,null,3]    [1,2,3]

空数组

如果您只提供一个 NULL 参数或者不提供参数, JSON_ARRAY() 将返回空数组。

SET NULL 'NULL';
SELECT JSON_ARRAY(NULL), JSON_ARRAY()
FROM dual;

输出:

JSON_ARRAY(NULL)    JSON_ARRAY()
___________________ _______________
[]                  []

在本示例中,我们使用 SET NULL 'NULL'; 语句将 NULL 值显示为 'NULL' 字符串。

结论

Oracle JSON_ARRAY() 是一个内置函数,它将每个输入为一个 JSON 值,并返回一个包含这些 JSON 值的 JSON 数组。