跳到主要内容

JSON_SET

描述

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

语法

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

说明

json_doc 参数用于指定 JSON 文档,path 为路径参数。如果任何参数为 NULLpath(如果给定)未定位到对象,则返回 NULL

以下情况都会发生报错:

  • json_doc 参数不是有效的 JSON 文档。

  • path 参数不是有效的路径表达式。

  • path 参数包含 * 或 ** 通配符。

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

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

  • 现有对象中不存在的成员。该成员被添加到对象并与新值相关联。

  • 超出现有数组末尾的位置。此时使用新值扩展数组。如果现有值不是数组,则将其自动包裹为数组,然后使用新值进行扩展。

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

示例

SET @jn = '{ "a": 1, "b": [2, 3]}';
Query OK, 0 rows affected (0.000 sec)

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 (0.001 sec)