问题:修改mysql中某个字段,json格式数据中的值

您所在的位置:网站首页 mysql脚本格式 问题:修改mysql中某个字段,json格式数据中的值

问题:修改mysql中某个字段,json格式数据中的值

2023-08-06 09:06| 来源: 网络整理| 查看: 265

生产环境场景:一张mysql数据表,有一个String/text类型字段,存储的json格式数据,现在要对json数据做修改(比如:根据条件对endDate的值做修改),如何实现?

举例:表结构如下(简写的样板),其中sync_info字段存储的是json格式数据 CREATE TABLE `oms_order_sync_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', `oms_order_no` varchar(100) NOT NULL COMMENT 'OMS订单编号', `sync_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '同步状态:0-失败,1-成功', `sync_info` text NOT NULL COMMENT '同步信息', PRIMARY KEY (`id`), UNIQUE KEY `idx` (`oms_order_no`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='oms订单-同步异常日志表'; sync_info字段存储的是json格式数据(简写的样板) { "omsOrderNo":"oms12345678", "createTime":"2021-12-07 12:56:49", "detailList":[ { "endDate":"2021-11-22 00:00:00", "skuCode":"111111", "productDate":"2021-11-22 00:00:00" }, { "endDate":"2021-10-11 00:00:00", "skuCode":"222222", "productDate":"2021-10-11 00:00:00" }, { "endDate":"2021-09-11 00:00:00", "skuCode":"333333", "productDate":"2021-09-11 00:00:00" } ], "orderType":"1" } 一、方法一(在后端写代码实现):

写的代码需要上线(拉分支发布紧急版本,不推荐)

后端读取数据库,解析修改数据,再update,很简单,略。

二、方法二(纯mysql脚本实现):

生产执行纯sql脚本(mysql版本需要支持json函数,脚本比较复杂)

例子1(不需要json中条件,只修改某个值): //将oms_order_no= '传条件oms订单号'的所有记录,替换sync_info字段中,key为detailList的第一个对象中属性endDate的value值 UPDATE oms_order_sync_log SET sync_info = json_set( sync_info, "$.detailList[0].endDate", "2021-12-22 00:00:00" ) WHERE oms_order_no= '传条件oms订单号'; 例子2(不需要条件,只修改某个值): 三、方法三(后端写代码 + mysql脚本实现):

写的代码不需要上线,把正确的数据刷到生产(推荐)

步骤1:把生产数据库的sql导出来,如: xxx.sql 步骤2:把 xxx.sql 导入到开发数据库 步骤3:在本地开发环境写代码,把 xxx.sql中的数据,改正确(前提:数据量大) 步骤4:把开发数据库中,改正确的sql导出来 步骤5:把正确的数据更新到生产数据库

四、方法四(手动改数据 + mysql脚本实现):

步骤1:把生产数据库的sql导出来,如: xxx.sql 步骤2:把 xxx.sql 导入到开发数据库 步骤3:本地开发环境,手动把 xxx.sql中的数据,改正确(前提:数据量很少) 步骤4:把开发数据库中,改正确的sql导出来 步骤5:把正确的数据更新到生产数据库



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3