网站做关键词搜索要好多钱,微网站不能分享朋友圈,如何推广自己的网店,如今做哪个网站致富在 MySQL 8.0 及更高版本中#xff0c;JSON_ARRAY_APPEND() 函数用于在 JSON 数组的指定位置追加一个或多个值。这个函数非常有用#xff0c;特别是在你需要在 JSON 数组的末尾或特定位置添加新的元素时。
基本语法
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ..…在 MySQL 8.0 及更高版本中JSON_ARRAY_APPEND() 函数用于在 JSON 数组的指定位置追加一个或多个值。这个函数非常有用特别是在你需要在 JSON 数组的末尾或特定位置添加新的元素时。
基本语法
JSON_ARRAY_APPEND(json_doc, path, val[, path, val] ...)json_doc: 要修改的 JSON 文档。path: 要追加值的路径。路径必须指向一个数组。val: 要追加的新值。
示例
假设有一个表 users其中有一个字段 data 存储了用户的 JSON 数据
CREATE TABLE users (id INT PRIMARY KEY,data JSON
);INSERT INTO users (id, data) VALUES
(1, {name: Alice, age: 30, hobbies: [reading, traveling]}),
(2, {name: Bob, age: 25, hobbies: [gaming, coding]});示例 1: 向 JSON 数组中追加一个值
假设我们要向 id 为 1 的用户的 hobbies 数组中追加一个新的爱好 “cooking”
UPDATE users
SET data JSON_ARRAY_APPEND(data, $.hobbies, cooking)
WHERE id 1;查询结果
SELECT * FROM users;输出结果
----------------------------------------------------------------
| id | data |
----------------------------------------------------------------
| 1 | {name: Alice, age: 30, hobbies: [reading, traveling, cooking]} |
| 2 | {name: Bob, age: 25, hobbies: [gaming, coding]} |
----------------------------------------------------------------示例 2: 向 JSON 数组中追加多个值
假设我们要向 id 为 2 的用户的 hobbies 数组中追加两个新的爱好 “painting” 和 “music”
UPDATE users
SET data JSON_ARRAY_APPEND(data, $.hobbies, painting, $.hobbies, music)
WHERE id 2;查询结果
SELECT * FROM users;输出结果
----------------------------------------------------------------------
| id | data |
----------------------------------------------------------------------
| 1 | {name: Alice, age: 30, hobbies: [reading, traveling, cooking]} |
| 2 | {name: Bob, age: 25, hobbies: [gaming, coding, painting, music]} |
----------------------------------------------------------------------示例 3: 向嵌套的 JSON 数组中追加值
假设 JSON 数据中包含嵌套的数组
INSERT INTO users (id, data) VALUES
(3, {name: Charlie, age: 35, projects: [{name: Project A, tasks: [task1, task2]}, {name: Project B, tasks: [task3, task4]}] });我们可以向 id 为 3 的用户的 projects 数组中的第一个项目的 tasks 数组中追加一个新的任务 “task5”
UPDATE users
SET data JSON_ARRAY_APPEND(data, $.projects[0].tasks, task5)
WHERE id 3;查询结果
SELECT * FROM users;输出结果
-----------------------------------------------------------------------------------------------------------------------------
| id | data |
-----------------------------------------------------------------------------------------------------------------------------
| 1 | {name: Alice, age: 30, hobbies: [reading, traveling, cooking]} |
| 2 | {name: Bob, age: 25, hobbies: [gaming, coding, painting, music]} |
| 3 | {name: Charlie, age: 35, projects: [{name: Project A, tasks: [task1, task2, task5]}, {name: Project B, tasks: [task3, task4]}] } |
-----------------------------------------------------------------------------------------------------------------------------注意事项
JSON_ARRAY_APPEND() 只能在 JSON 数组的末尾追加值。如果路径指向的不是数组JSON_ARRAY_APPEND() 将返回 NULL。如果路径不存在JSON_ARRAY_APPEND() 也不会修改 JSON 文档。如果需要在数组的特定位置插入值可以使用 JSON_INSERT() 或 JSON_SET() 函数。
组合使用
JSON_ARRAY_APPEND() 通常与其他 JSON 函数结合使用以便更灵活地处理 JSON 数据。例如你可以先使用 JSON_EXTRACT() 提取值然后使用 JSON_ARRAY_APPEND() 修改值。