JSON_REPLACE
更新时间:2025-10-16
描述
JSON_REPLACE 函数用于在 JSON 中更新数据并返回结果。
语法
SQL
1JSON_REPLACE (<json_str>, <path>, <val>[, <jsonPath>, <val>, ...])
参数
| 参数 | 描述 |
|---|---|
<json_str> |
要替换的 JSON 数据。可以是任意类型元素的 JSON 对象,包括NULL,如果没有指定元素,则返回一个空数组。如果 json_str 不是有效的 JSON,则会返回错误 |
<path> |
要替换的 JSON 路径。 |
<val> |
要替换 JSON_PATH Key 对应 value 的值。如果是 NULL ,则会在对应的位置插入 NULL 的 value 值。 |
返回值
如果 json_str 和 path 都为 NULL,则返回 NULL。
否则,如果 json_str 不是有效的 JSON 或任何 path 参数不是有效的路径表达式或包含了 * 通配符,则会返回错误。
路径值对按从左到右的顺序进行评估。
如果 JSON 中已存在某个路径,则路径值对会将现有 JSON 值覆盖为新值。否则,对于 JSON 中不存在的某个路径的路径值对将被忽略且不会产生任何影响。
示例
SQL
1select json_replace(null, null, null);
Text
1+----------------------------------+
2| json_replace(NULL, NULL, 'NULL') |
3+----------------------------------+
4| NULL |
5+----------------------------------+
SQL
1select json_replace('{"k": 1}', "$.k", 2);
Text
1+----------------------------------------+
2| json_replace('{\"k\": 1}', '$.k', '2') |
3+----------------------------------------+
4| {"k":2} |
5+----------------------------------------+
SQL
1select json_replace('{"k": 1}', "$.j", 2);
Text
1+----------------------------------------+
2| json_replace('{\"k\": 1}', '$.j', '2') |
3+----------------------------------------+
4| {"k":1} |
5+----------------------------------------+
SQL
1select json_replace(null, null, 's');
Text
1+--------------------------------------+
2| json_replace(NULL, NULL, 's', '006') |
3+--------------------------------------+
4| NULL |
5+--------------------------------------+
