首批通过分布式安全可靠测评,为关键业务系统打造
JSON_VALUE
更新时间:2026-03-21 19:04:50
描述
JSON_VALUE() 函数用于查询 JSON 数据中的特定部分,并且返回 SQL 值。
语法
JSON_VALUE(value_expr [FORMAT JSON],
json_path_literal
[RETURNING NUMBER|DATE|TIMESTAMP|VARCHAR2|VARCHAR2[size],]
[ERROR|NULL|DEFAULT-literal ON ERROR]
[ERROR|NULL|DEFAULT-literal ON EMPTY]
[ERROR|NULL ON MISMATCH]);
语法说明
JSON_VALUE() 函数语法说明如下:
[RETURNING NUMBER | DATE | TIMESTAMP | VARCHAR2 | VARCHAR2[size]:可选,用以指定返回值类型,其中VARCHAR2[size],可以限制返回值的长度,默认返回VARCHAR2(4000)。FORMAT JSON:可选项,当value_expr的数据类型是BLOB时,需要使用该子句。ERROR:控制表达式执行过程中除类型转换错误外的错误输出,并返回处理的结果。EMPTY:指定查找过程中出现空值的时候,返回处理的结果。MISMATCH:控制类型转换错误的输出。
示例
# 使用默认参数
obclient> SELECT JSON_VALUE('{"a":100}', '$.a') AS value FROM DUAL;
+-------+
| VALUE |
+-------+
| 100 |
+-------+
1 row in set
# 使用 ERROR 子句
obclient> SELECT JSON_VALUE( '{a:"cat"}','$.a.number()' NULL ON EMPTY DEFAULT -1 ON ERROR ) FROM DUAL;
+-------------------------------------------------------------------+
| JSON_VALUE('{A:"CAT"}','$.A.NUMBER()'NULLONEMPTYDEFAULT-1ONERROR) |
+-------------------------------------------------------------------+
| -1 |
+-------------------------------------------------------------------+
1 row in set
# 使用 DEFAULT 子句
obclient> SELECT JSON_VALUE('{firstname:"John"}', '$.lastname' DEFAULT 'No last name found' ON ERROR) AS "Last Name" FROM DUAL;
+--------------------+
| Last Name |
+--------------------+
| No last name found |
+--------------------+
1 row in set
# 使用 RETURNING 子句
obclient> SELECT JSON_VALUE('"2019-08-30, 1"', '$' RETURNING CLOB error on error) FROM DUAL;
+-----------------------------------------------------------+
| JSON_VALUE('"2019-08-30,1"','$'RETURNINGCLOBERRORONERROR) |
+-----------------------------------------------------------+
| 2019-08-30, 1 |
+-----------------------------------------------------------+
1 row in set