---
title: "JSON_CONTAINS - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: JSON_CONTAINS 描述 该函数用于检验指定 JSON 文档是否包含在目标 JSON 文档中，或者是否在目标文档的指定路径上找到指定元素（如果提供了 path 参数）。如果指定 JSON 文档包含在目标 JSON 文档中，该函数返回 1，否则返回 0。 如果只需要检查指定路径中是否存在数据，请使用 JSON_…
---
切换语言

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

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

# JSON_CONTAINS

更新时间：2026-02-06 10:39:56

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/700.json-functions-of-mysql-mode/200.search-json-text-function-of-mysql-mode/100.json-contains-of-mysql-mode.md)  

## 描述

该函数用于检验指定 JSON 文档是否包含在目标 JSON 文档中，或者是否在目标文档的指定路径上找到指定元素（如果提供了 `path` 参数）。如果指定 JSON 文档包含在目标 JSON 文档中，该函数返回 1，否则返回 0。

如果只需要检查指定路径中是否存在数据，请使用 JSON_CONTAINS_PATH() 代替。

## 语法

```sql
JSON_CONTAINS(target, candidate[, path])

```

## 说明

参数 `candidate` 用于指定 JSON 文档，参数 `target` 表示目标 JSON 文档。

如果任意参数为 `NULL`，或者 `path` 参数未被识别为目标文档的一部分，则返回 `NULL`。

以下情况都会发生报错：

- `candidate` 或 `target` 参数不是有效的 JSON 文档。
 - `path` 参数不是有效的路径表达式。
 - `path` 参数包含 * 或 ** 通配符。

该函数遵循以下的规则：

- 单个元素相等的前提是两个标量值的 JSON_TYPE() 相同，并且可以进行比较。如果是数值类型，可以直接进行比较。
 - 对于数组，当且仅当 `candidate` 数组的所有元素都包含在 `target` 数组中时，`candidate` 数组才包含在 `target` 数组中。
 - 对于对象，当且仅当 `candidate` 对象的所有 `key` 都需要包含在 `target` 对象中，而且每个 `key` 对应的 `value` 也要和目标对象对应的 `key` 相同时，`candidate` 对象才包含在 `target` 对象中。

## 示例

```sql
obclient> SET @jn = '{"a": 1, "b": 2, "c": {"d": 4}}';
Query OK, 0 rows affected

obclient> SET @jn2 = '1';
Query OK, 0 rows affected

obclient> SELECT JSON_CONTAINS(@jn, @jn2, '$.a');
+---------------------------------+
| JSON_CONTAINS(@jn, @jn2, '$.a') |
+---------------------------------+
|                               1 |
+---------------------------------+
1 row in set

obclient> SELECT JSON_CONTAINS(@jn, @jn2, '$.b');
+---------------------------------+
| JSON_CONTAINS(@jn, @jn2, '$.b') |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set

obclient> SET @jn2 = '{"d": 4}';
Query OK, 0 rows affected

obclient> SELECT JSON_CONTAINS(@jn, @jn2, '$.a');
+---------------------------------+
| JSON_CONTAINS(@jn, @jn2, '$.a') |
+---------------------------------+
|                               0 |
+---------------------------------+
1 row in set

obclient> SELECT JSON_CONTAINS(@jn, @jn2, '$.c');
+---------------------------------+
| JSON_CONTAINS(@jn, @jn2, '$.c') |
+---------------------------------+
|                               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) 咨询热线
