MySQL JSON_ARRAY_APPEND() 函数使用指南
MySQL JSON_ARRAY_APPEND() 函数向 JSON 文档中的指定的数组中追加一个值并返回修改后的 JSON 文档。
JSON_ARRAY_APPEND() 语法
这里是 MySQL JSON_ARRAY_APPEND() 的语法:
JSON_ARRAY_APPEND(json, path, value[, path2, value2] ...)
参数
json- 必需的。被修改的 JSON 文档。
path- 必需的。添加新元素的路径。一个有效的路径表达式,它不能包含
*或**。 value- 必需的。被添加到数组的新元素值。
返回值
JSON_ARRAY_APPEND() 函数用来修改 JSON 文档,它向指定的数组节点中追加一个元素,并返回修改后的 JSON 文档。
- 如果路径表达式指示的节点不是一个数组节点,
JSON_ARRAY_APPEND()函数将会将此节点的值作为数组的第一个元素,并在数组的尾部追加新元素。 - 如果 JSON 文档或者路径为
NULL,此函数将返回NULL。
JSON_ARRAY_APPEND() 函数将在以下情况下返回错误:
- 如果参数
json不是有效的 JSON 文档,MySQL 将会给出错误。您可以使用JSON_VALID()验证 JSON 文档的有效性。 - 如果参数
path不是有效的路径表达式或者其中包含*或**, MySQL 将会给出错误。
JSON_ARRAY_APPEND() 示例
这里列出了几个常见的 JSON_ARRAY_APPEND() 用法示例。
在数组末尾追加元素
SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4);
+----------------------------------------+
| JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4) |
+----------------------------------------+
| [1, 2, 3, 4] |
+----------------------------------------+这里, 路径表达式 $ 表示正在操作的 JSON 文档。
向内嵌数组中追加元素
SELECT JSON_ARRAY_APPEND('[1, [2, 3]]', '$[1]', 4);
+---------------------------------------------+
| JSON_ARRAY_APPEND('[1, [2, 3]]', '$[1]', 4) |
+---------------------------------------------+
| [1, [2, 3, 4]] |
+---------------------------------------------+这里, 路径表达式 $[1] 表示正在操作的 JSON 文档数组中的第 2 个元素。
向对象中的数组中追加元素
SELECT JSON_ARRAY_APPEND('{"name": "Tim", "hobby": ["car"]}', '$.hobby', "food");
+---------------------------------------------------------------------------+
| JSON_ARRAY_APPEND('{"name": "Tim", "hobby": ["car"]}', '$.hobby', "food") |
+---------------------------------------------------------------------------+
| {"name": "Tim", "hobby": ["car", "food"]} |
+---------------------------------------------------------------------------+这里, 路径表达式 $.hobby 表示正在操作的 JSON 文档对象的成员 hobby。
向非数组中追加值
SELECT JSON_ARRAY_APPEND('1', '$', 2);
+--------------------------------+
| JSON_ARRAY_APPEND('1', '$', 2) |
+--------------------------------+
| [1, 2] |
+--------------------------------+这里,JSON 文档有元素 1 修改成了数组 [1, 2]。
同样可以向数组中的非数组成员中追加,比如:
SELECT JSON_ARRAY_APPEND('[1, 2]', '$[1]', 3);
+----------------------------------------+
| JSON_ARRAY_APPEND('[1, 2]', '$[1]', 3) |
+----------------------------------------+
| [1, [2, 3]] |
+----------------------------------------+还可以向对象中的非数组成员中追加,比如:
SELECT JSON_ARRAY_APPEND('{"name": "Tim", "hobby": "car"}', '$.hobby', "food");
+-------------------------------------------------------------------------+
| JSON_ARRAY_APPEND('{"name": "Tim", "hobby": "car"}', '$.hobby', "food") |
+-------------------------------------------------------------------------+
| {"name": "Tim", "hobby": ["car", "food"]} |
+-------------------------------------------------------------------------+