导读:本期聚焦于小伙伴创作的《mysql如何使用函数处理JSON数组字段_利用JSON_ARRAY_APPEND函数》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《mysql如何使用函数处理JSON数组字段_利用JSON_ARRAY_APPEND函数》有用,将其分享出去将是对创作者最好的鼓励。

在mysql数据库的实际开发中,JSON类型字段的使用越来越普遍,尤其是JSON数组字段常被用来存储一对多的关联数据。当需要在已有的JSON数组字段中追加新元素时,手动拼接JSON字符串不仅容易出错,还会增加代码复杂度,此时使用mysql内置的JSON_ARRAY_APPEND函数就能高效解决问题。

mysql如何使用函数处理JSON数组字段_利用JSON_ARRAY_APPEND函数

JSON_ARRAY_APPEND函数基本语法

JSON_ARRAY_APPEND函数的核心作用是向JSON文档的指定路径处的数组中追加一个或多个值,其基本语法格式如下:

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

各参数含义说明:

  • json_doc:要操作的JSON文档,可以是JSON类型的字段,也可以是合法的JSON字符串。
  • path:JSON路径表达式,用于指定要操作的数组在JSON文档中的位置,路径需要以$开头,数组元素的路径格式为$.数组名或者$.数组名[index]
  • val:要追加到数组中的值,可以是任意mysql支持的数据类型,函数会自动将其转换为对应的JSON类型。

如果函数执行成功,会返回修改后的完整JSON文档;如果参数不合法或者路径不存在,会返回NULL。

基础使用示例

首先我们创建一个测试表,包含一个JSON数组类型的字段,方便后续演示操作:

-- 创建测试表
CREATE TABLE user_tags (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_name VARCHAR(50) NOT NULL,
    tags JSON COMMENT '用户标签数组'
);

-- 插入测试数据,tags字段为JSON数组
INSERT INTO user_tags (user_name, tags) VALUES 
('张三', '["运动", "阅读"]'),
('李四', '["美食", "旅游"]');

现在我们需要给张三的标签数组中追加一个新的标签摄影,可以使用如下SQL语句:

SELECT 
    user_name,
    JSON_ARRAY_APPEND(tags, '$', '摄影') AS new_tags
FROM user_tags 
WHERE user_name = '张三';

执行上述语句后,返回的结果中new_tags字段的值为["运动", "阅读", "摄影"],说明新元素已经成功追加到数组末尾。

更新表中JSON数组字段

上面的示例只是查询时返回修改后的结果,实际开发中我们通常需要直接更新表中字段的值,结合UPDATE语句即可实现:

-- 给李四的标签数组追加新标签
UPDATE user_tags 
SET tags = JSON_ARRAY_APPEND(tags, '$', '摄影') 
WHERE user_name = '李四';

-- 查询更新后的结果
SELECT user_name, tags FROM user_tags WHERE user_name = '李四';

执行后李四的tags字段会变为["美食", "旅游", "摄影"],完成字段的永久更新。

追加多个元素与嵌套路径操作

JSON_ARRAY_APPEND函数支持一次追加多个元素,也支持操作嵌套JSON中的数组,示例如下:

一次追加多个元素

-- 给张三的标签同时追加两个新标签
UPDATE user_tags 
SET tags = JSON_ARRAY_APPEND(tags, '$', '音乐', '$', '绘画') 
WHERE user_name = '张三';

SELECT tags FROM user_tags WHERE user_name = '张三';

执行后张三的tags字段会变为["运动", "阅读", "摄影", "音乐", "绘画"]

操作嵌套JSON中的数组

如果JSON字段是嵌套结构,比如用户扩展信息中包含一个兴趣数组,结构如下:

-- 插入嵌套JSON的测试数据
INSERT INTO user_tags (user_name, tags) VALUES 
('王五', '{"base": ["篮球"], "hobby": ["书法"]}');

要给hobby数组中追加新元素,需要指定正确的路径:

-- 给王五的hobby数组追加新元素
UPDATE user_tags 
SET tags = JSON_ARRAY_APPEND(tags, '$.hobby', '围棋') 
WHERE user_name = '王五';

SELECT tags FROM user_tags WHERE user_name = '王五';

执行后王五的tags字段会变为{"base": ["篮球"], "hobby": ["书法", "围棋"]},嵌套数组操作成功。

注意事项

  • 如果指定的路径在JSON文档中不存在,JSON_ARRAY_APPEND函数会返回NULL,因此操作前需要确保路径合法。
  • 追加的元素会自动转换为JSON类型,比如数字会转为JSON数字,字符串会转为JSON字符串,不需要手动添加引号。
  • 如果原字段的值不是JSON数组,而是其他JSON类型,函数会尝试将其转换为数组后再追加元素,比如原值是字符串"test",追加后会变为["test", "new_val"]
  • 该函数不会修改原JSON文档中其他路径的内容,只会修改指定路径处的数组。
如果需要向数组的指定位置插入元素而不是追加到末尾,可以使用JSON_ARRAY_INSERT函数,其语法和JSON_ARRAY_APPEND类似,只是需要指定插入的索引位置。

mysqlJSON_array_appendJSON数组字段数据库函数修改时间:2026-07-05 15:39:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。