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(1,2,3,4)
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(1,2, null, 3) "Default",
JSON_ARRAY(1,2, null, 3 NULL ON NULL) "NULL ON NULL",
JSON_ARRAY(1,2, 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 数组。