---
title: "JSON_EXISTS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: JSON_EXISTS 描述 JSON_EXISTS() 函数在 SQL 语句中作为 SQL 条件，来检验指定路径下的 JSON 数据是否存在，或者满足某些条件，可以理解为针对 JSON 数据起到过滤条件作用。如果 JSON 值存在，此条件返回 TRUE ，如果 JSON 值不存在，则返回 FALSE 。 语法 JS…
---
切换语言

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

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

# JSON_EXISTS

更新时间：2026-03-23 14:24:08

[编辑](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/300.json-exists-oracle-mode.md)  

## 描述

`JSON_EXISTS()` 函数在 SQL 语句中作为 SQL 条件，来检验指定路径下的 JSON 数据是否存在，或者满足某些条件，可以理解为针对 JSON 数据起到过滤条件作用。如果 JSON 值存在，此条件返回 `TRUE`，如果 JSON 值不存在，则返回 `FALSE`。

## 语法

```sql
JSON_EXISTS(
              expr [FORMAT JSON],
              json_path_literal
                 [PASSING expr AS identifier]
                 [ERROR|TRUE|FALSE ON ERROR]
              [ERROR|TRUE|FALSE ON EMPTY]);

```

## 语法说明

`JSON_EXISTS()` 函数语法说明如下：

- `FORMAT JSON`子句：可选项，当 `expr` 的数据类型是 `BLOB` 时，需要使用该子句。
 - `json_path_literal`：必选参数，指定查询的路径，这里可以使用带有过滤条件的 `json_path` 语句
 - `ERROR`子句：
     - `ERROR ON ERROR` 输入 `expr` 不是格式正确的 JSON 数据时返回相应的错误。
     - `TRUE ON ERROR` 输入 `expr` 不是格式正确的 JSON 数据时返回 `TRUE`。
     - `FALSE ON ERROR` 输入 `expr` 不是格式正确的 JSON 数据时返回 `FALSE`，为默认选项。
 - `EMPTY` 子句：只要不存在为 `TRUE` 的结果，即返回 `FALSE`。
 - `PASSING` 子句：将外部的 SQL 变量传递给 `json_path`，用于过滤表达式中 Path 指定路径下的值和该 SQL 变量进行比较。

## 示例

```shell
# 使用默认参数，用于选取符合条件的 JSON 值
CREATE TABLE t (name VARCHAR2(100));
INSERT INTO t VALUES ('[{first:"John"}, {middle:"Mark"}, {last:"Smith"}]');
INSERT INTO t VALUES ('[{first:"Mary"}, {last:"Jones"}]');
INSERT INTO t VALUES ('[{first:"Jeff"}, {last:"Williams"}]');
INSERT INTO t VALUES ('[{first:"Jean"}, {middle:"Anne"}, {last:"Brown"}]');
INSERT INTO t VALUES (NULL);
INSERT INTO t VALUES ('This is not well-formed JSON data');

obclient> SELECT name FROM t  WHERE JSON_EXISTS(name, '$[0].first');
+---------------------------------------------------+
| NAME                                              |
+---------------------------------------------------+
| [{first:"John"}, {middle:"Mark"}, {last:"Smith"}] |
| [{first:"Mary"}, {last:"Jones"}]                  |
| [{first:"Jeff"}, {last:"Williams"}]               |
| [{first:"Jean"}, {middle:"Anne"}, {last:"Brown"}] |
+---------------------------------------------------+
4 rows in set

# 当出现不匹配时，或者 expr 不是合法的JSON数据时，JSON_EXIST 返回 false
obclient> SELECT name FROM t WHERE JSON_EXISTS(name, '$[1].middle');
+---------------------------------------------------+
| NAME                                              |
+---------------------------------------------------+
| [{first:"John"}, {middle:"Mark"}, {last:"Smith"}] |
| [{first:"Jean"}, {middle:"Anne"}, {last:"Brown"}] |
+---------------------------------------------------+
2 rows in set

# 将 PASSING 子句传递给 json-path 参数
obclient> SELECT name FROM t WHERE JSON_EXISTS(name, '$[1]?(@.middle == $var1)' PASSING 'Anne' as "var1");
+---------------------------------------------------+
| NAME                                              |
+---------------------------------------------------+
| [{first:"Jean"}, {middle:"Anne"}, {last:"Brown"}] |
+---------------------------------------------------+
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) 咨询热线
