实际需求中,需要对某张表某字段里面的内容进行批量替换,普通的思考流程如下:
SELECT出来
str_replace替换
UPDATE写入
实际这样极其浪费资源以及消耗资源,MYSQL内置了一个批量替换的语法
复制代码代码如下:
UPDATE table SET field = replace(field,'被替换','替换成')
直接就替换了,后面也可以跟WHERE 条件语句
支持多个词同时被替换
复制代码代码如下:
UPDATE table SET field = replace(field,'被替换1','替换成1'),field = replace(field,'被替换2','替换成2')
很强大吧,后面那个一次性更换多个网上是没有的列子,现在记录下来
生产实例:
第一个语法返回substr在字符串str 的第一个出现的位置。第二个语法返回子符串 substr 在字符串str,从pos处开始的第一次出现的位置。如果substr 不在str 中,则返回值为0 。
update ns_exchange_gift set exchange_code = replace(exchange_code,'89','98') where locate('89',exchange_code)<>0
-- select * from ns_exchange_gift where locate('89',exchange_code)<>0
-- select * from ns_exchange_gift where locate('00',exchange_code)<>0 or locate('02',exchange_code)<>0
多词替换(含有'00'或者含有'02'):
update ns_exchange_gift set exchange_code = replace(exchange_code,'00','11'),exchange_code=REPLACE(exchange_code,'02','20')