---
title: github-fill
description: "JSON_SET 描述 该函数用于在 JSON 文档中插入或更新数据并返回结果。 语法 JSON_SET(json_doc, path, val[, path, val] ...) 说明 json_doc 参数用于指定 JSON 文档， path 为路径参数。如果任何参数为 NULL 或 path （如果给定）未定位…"
---
切换语言

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

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

# JSON_SET

更新时间：2026-01-29 12:42:50

[编辑](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/300.modify-json-text-function-of-mysql-mode/900.json-set-of-mysql-mode.md)  

## 描述

该函数用于在 JSON 文档中插入或更新数据并返回结果。

## 语法

```sql
JSON_SET(json_doc, path, val[, path, val] ...)

```

## 说明

`json_doc` 参数用于指定 JSON 文档，`path` 为路径参数。如果任何参数为 `NULL` 或 `path`（如果给定）未定位到对象，则返回 `NULL`。

以下情况都会发生报错：

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

路径值对 path-value 按照从左到右的顺序进行评估。通过 path-value 对所生成的文档作为评估下一对的新值。

文档中现有路径的 path-value 对会用新值覆盖现有文档值。如果路径标识的对象不存在，则文档中不存在路径的路径值对会按照如下规则添加到文档中：

- 现有对象中不存在的成员。该成员被添加到对象并与新值相关联。
 - 超出现有数组末尾的位置。此时使用新值扩展数组。如果现有值不是数组，则将其自动包裹为数组，然后使用新值进行扩展。

否则，文档中不存在的路径的路径值对将被忽略且无效。

## 示例

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

obclient> SELECT JSON_SET(@jn, '$.a', 10, '$.c', '[true, false]');
+--------------------------------------------------+
| JSON_SET(@jn, '$.a', 10, '$.c', '[true, false]') |
+--------------------------------------------------+
| {"a": 10, "b": [2, 3], "c": "[true, false]"}     |
+--------------------------------------------------+
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) 咨询热线
