您的位置:首页 > 财经 > 金融 > mysql 如何修改JSON字段中的一部分参数值

mysql 如何修改JSON字段中的一部分参数值

2025/7/2 18:43:54 来源:https://blog.csdn.net/weixin_42605050/article/details/140638282  浏览:    关键词:mysql 如何修改JSON字段中的一部分参数值

在 MySQL 中修改 JSON 对象中的一部分值可以使用一些内置的 JSON 函数来实现。假设你有一个包含 JSON 数据的列,你可以使用 JSON_SET() 函数来更新其中的某个字段。

假设你有一个表 my_table,其中有一个 json_column 列包含 JSON 数据,示例数据如下:

{"name": "John","age": 30,"address": {"city": "New York","state": "NY"}
}

现在,假设你想更新 address 对象中的 city 字段为 “San Francisco”。你可以使用 JSON_SET() 函数来实现:

UPDATE my_table
SET json_column = JSON_SET(json_column, '$.address.city', 'San Francisco')
WHERE id = 1;

如果要更新的字段不存在,JSON_SET() 函数会自动创建它。

在举个例子,json如下:

{"id": 1726768430132957191,"col": 8,"data": "","canSee": true,"isValid": "Y","maxSize": 20,"dataJson": null,"dictType": "","disabled": false,"formHide": true,"isDelete": true,"tenantId": 1702555882876141569,"optionArr": [{"label": "系统生成","value": "SYSTEM","showClose": null}, {"label": "通用模板","value": "MANUAL","showClose": null}]}

要更新 optionArr 数组中的一个元素的 label 字段。在 JSON 中,optionArr 是一个数组,因此你需要使用 JSON path 来指定要更新的具体元素。在 MySQL 中,数组的索引从0开始。

下面是更新语句需要进行的调整:

UPDATE lc_template_table
SET module_meta = JSON_SET(module_meta, '$.optionArr[0].label', '实验生成')
WHERE id = 1;

同时想将optionArr[1]…label 修改成“通用模板 ” 怎么修改呢

UPDATE lc_template_table
SET module_meta = JSON_SET(JSON_SET(module_meta, '$.optionArr[0].label', '实验生成'),'$.optionArr[1].label', '通用模板'
)
WHERE id = 1;

在这个更新语句中:

JSON_SET() 函数被嵌套使用。外部的 JSON_SET() 用来更新整体的 module_meta JSON 对象。
内部的 JSON_SET() 分别用来更新 optionArr 数组中的两个元素的 label 字段。
第一个 JSON_SET() 更新 optionArr[0].label 为 ‘实验生成’。
第二个 JSON_SET() 更新 optionArr[1].label 为 ‘通用模板’。
这样就可以一次性修改多个元素的值。记得根据实际情况调整数组元素的索引,确保更新到正确的位置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com