今天在工作的过程中碰到一个问题,要把数据库中某个列的所有值中含有"ceshi.test.com"的字符去掉,本来可以写个脚本,把所有的值都取出再导入进行处理,但是那样就效率非常低了,想到看试下能不能直接在MySQL中用SQL语句直接来处理,就想到mysql的replace函数。
mysql replace用法 1. replace into
replace into table (id,name) values('1','aa'),('2','bb');
此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在。
就相当于 insert into table (id,name)values('1','aa'),('2','bb');
如果存在相同的值则不会插入数据。
2.replace(object,search,replace)
UPDATE 表名 SET 字段名= REPLACE( 字段名, '替换前关键字', '替换后关键字');
如下:
replace用法举例:
应用场景:
游戏数据库新服初始化没有更改组号id,开服后用户id全为初始化组号。
导致问题:
可能导致合服时出现重复id。
解决方案:
修改组号,因为组号为id前三位,所以只需把前三位替换正确的组号即可。
操作步骤:
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME frominformation_schema.COLUMNS where COLUMN_NAME='id';
UPDATE 表名 SET 字段名= REPLACE( 替换前的字段, '替换前关键字', '替换后关键字' ) WHERE 字段名 REGEXP "替换前的字段值";
update test.test_1 setid=REPLACE(id,10100,10700);
update test.test_2 setid=REPLACE(id,10100,10700);
update test.test_3 setid=REPLACE(id,10100,10700);
验证测试:
数据库中检查,通知研发、测试验证。