---
title: github-fill
description: "JSON_VALUE 描述 JSON_VALUE() 函数用于查询 JSON 数据中的特定部分，并且返回 SQL 值。 语法 JSON_VALUE(value_expr [FORMAT JSON], json_path_literal [RETURNING NUMBER|DATE|TIMESTAMP|VARCHAR2…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# JSON_VALUE

更新时间：2026-03-21 19:04:50

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/500.functions-of-oracle-mode/200.single-row-functions-of-oracle-mode/1200.json-functions-oracle-mode/300.query-json-text-function-oracle/100.json-value-oracle-mode.md)  

## 描述

`JSON_VALUE()` 函数用于查询 JSON 数据中的特定部分，并且返回 SQL 值。

## 语法

```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`：控制类型转换错误的输出。

## 示例

```shell
# 使用默认参数
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

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
