如何批量修改mysql某表字段里的字符串内容 ?

如题,怎样修改表中某字段的字符串的值,如我表中有数据如下:

很明显在内容中有个时间是不对的,我想把时间修改成具体的另一张表的某字段的到期时间。

这里用到mysql的两个函数,replace()和substring()(具体语法,参考这篇博客)。

具体思路就是:先用substring把要替换的内容截取出来,然后再用replace函数替换成自己想要的内容

分析一下,我的信息除了时间,其他的内容是一样的。这样的话,我们可以通过substring把时间截取出来,由于不知道要替换的文本下标是多少,这里我用java来获取,如下:

public class demo {
	public static void main(String[] args) {
		
		String s = "您购买的365家长课堂VIP会员已经即将到期(1970-01-18 17:20:21 到期),如想继续免费观看所有微课";
		String s1 = "您购买的365家长课堂VIP会员已经即将到期(";
		String s2 = "您购买的365家长课堂VIP会员已经即将到期(1970-01-18 17:20:21";
		System.out.println("总长度" +s.length());
		System.out.println("开始下标:" + s1.length());
		System.out.println("结束下标:" + s2.length());
		String ss = s.substring(23, 42);
		System.out.println(ss);
		System.out.println("截图到的内容长度:" + ss.length());
    }
}

输出的结果是:

根据结果,我们就可以来截取和替换了。下面是mysql的写法:

SELECT a.content
,replace(a.content,substring(a.content,24,19), '这里是你想替换的内容') new_content
FROM tableA a

ps:mysql里的substring(content,start,len)和java中的substring(content,start,end)这两个函数中的最后一个参数是不同的,mysql的是要截取的字符串长度,而java的是结束下标,所以上面substring(a.content,24,19)为什么是19而不是java代码中的42就是这个原因。

我这里修改的是内容是我从另一张表查过来的字段,修改完后的效果如下图(update的sql就不贴出来了):

批量修改完毕。

总结:

批量修改的内容除了要修改的部分,其他的部分要一样;

在获取要截取内容的开始下标和内容长度,可借助自己熟悉的语言的字符串截取方法获得;

最后使用replace函数进行内容替换。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值