首批通过分布式安全可靠测评,为关键业务系统打造
JSON_ARRAY
更新时间:2026-03-13 17:20:16
描述
JSON_ARRAY() 函数计算一系列 SQL 标量表达式,将每个表达式转换为 JSON 值,并且构造一个包含这些 JSON 值的 JSON 数组。
JSON_ARRAY() 可以指定参数表达式的计算结果为 JSON 对象、JSON 数组、数字文字、文本文字、日期、时间戳或 NULL。此函数将数字文字转换为 JSON 数字值,并将文本文字转换为 JSON 字符串值。日期和时间戳数据类型在生成的 JSON 对象或数组中打印为遵循 ISO 8601 日期格式的 JSON 字符串。
语法
JSON_ARRAY (
[val [FORMAT JSON], val [FORMAT JSON] ...]
[ABSENT|NULL ON NULL]
[RETURNING JSON | CLOB| BLOB| VARCAHR2| VARCHAR2[size]]
[STRICT] )
语法说明
JSON_ARRAY() 函数语法说明如下:
FORMAT JSON: 可选子句,用于指定输入的字符串是 JSON 文本,输出时不需要再添加引号('"')。ABSENT|NULL ON NULL: 可选子句,指定对于空值的处理。NULL ON NULL: 当前表达式返回 JSON 的NULL类型。ABSENT ON NULL: 如果表达式计算结果是NULL,则忽略当前表达式。RETURNING JSON | CLOB| BLOB| VARCAHR2| VARCHAR2[size]: 可选子句,用于指定返回值类型。STRICT:可选子句,用于校验输出是合法的 JSON 格式。
示例
# 使用嵌套表达式以及 NULL ON NULL 子句
obclient> SELECT JSON_ARRAY (JSON_ARRAY(1,2,3),100,'California',null NULL ON NULL) "JSON Array Example"
FROM DUAL;
+-----------------------------------+
| JSON Array Example |
+-----------------------------------+
| ["[1,2,3]",100,"California",null] |
+-----------------------------------+
1 row in set
# ABSENT ON NULL 子句生效,结果里面没有 Null
obclient> SELECT JSON_ARRAY( JSON_ARRAY(1,2,3),100,'California', null ABSENT ON NULL) "JSON Array Example"
FROM DUAL;
+----------------------------------+
| JSON Array Example |
+----------------------------------+
| ["[1, 2, 3]", 100, "California"] |
+----------------------------------+
1 row in set
# FORMAT JSON 子句生效,把当前表达式输入字符串当做 JSON 类型,输出结果没有被加'\"'
obclient> SELECT JSON_ARRAY('{"a":"a-value", "b" : "b-value"}' format json RETURNING CLOB)
FROM DUAL;
+--------------------------------------------------------------------+
| JSON_ARRAY('{"A":"A-VALUE","B":"B-VALUE"}'FORMATJSONRETURNINGCLOB) |
+--------------------------------------------------------------------+
| [{"a": "a-value", "b": "b-value"}] |
+--------------------------------------------------------------------+
1 row in set
# 输入中没有 FORMAT JSON, 输出字符串被加了'\"'
obclient> SELECT JSON_ARRAY('{"a":"a-value", "b" : "b-value"}' RETURNING CLOB) FROM DUAL;
+----------------------------------------------------------+
| JSON_ARRAY('{"A":"A-VALUE","B":"B-VALUE"}'RETURNINGCLOB) |
+----------------------------------------------------------+
| ["{\"a\":\"a-value\", \"b\" : \"b-value\"}"] |
+----------------------------------------------------------+
1 row in set
# 指定返回值类型为 VARCHAR2 类型
obclient> SELECT JSON_ARRAY('{"a":"a-value", "b" : "b-value"}' format json RETURNING VARCHAR2)
FROM DUAL;
+------------------------------------------------------------------------+
| JSON_ARRAY('{"A":"A-VALUE","B":"B-VALUE"}'FORMATJSONRETURNINGVARCHAR2) |
+------------------------------------------------------------------------+
| [{"a": "a-value", "b": "b-value"}] |
+------------------------------------------------------------------------+
1 row in set