在MySQL中替换表里某个字段的指定字符串,最直接的方式是使用REPLACE函数结合UPDATE语句。REPLACE(str, from_str, to_str)会把字符串str里所有的from_str换成to_str,然后返回新字符串。我们只需把它放在SET子句中更新对应列即可。

基本替换语法
假设有一张用户表user,里面有个address字段,我们想把其中所有的"北京市"替换成"北京"。SQL如下:
-- 将user表中address字段里的'北京市'替换为'北京' UPDATE user SET address = REPLACE(address, '北京市', '北京') WHERE address LIKE '%北京市%';
上面的WHERE条件不是必须的,但加上它可以避免全表扫描那些根本不包含目标字符串的行,提升执行效率。
替换多个不同字符串
如果要同时把"广州市"换成"广州"、"深圳市"换成"深圳",可以嵌套使用REPLACE:
UPDATE user SET address = REPLACE(REPLACE(address, '广州市', '广州'), '深圳市', '深圳') WHERE address LIKE '%广州市%' OR address LIKE '%深圳市%';
只替换特定条件的记录
有时我们只想对部分数据做替换,比如只处理状态为1的用户:
UPDATE user SET address = REPLACE(address, '旧小区', '新小区') WHERE status = 1 AND address LIKE '%旧小区%';
操作前先备份
字符串替换属于更新操作,执行前最好先备份数据或者先用SELECT确认影响行数:
-- 先查询会命中哪些数据 SELECT id, address FROM user WHERE address LIKE '%北京市%'; -- 确认无误后再执行更新
| 函数 | 作用 |
|---|---|
| REPLACE() | 替换字符串中的子串 |
| UPDATE | 修改表中的数据 |
| WHERE | 限定更新的范围 |
使用REPLACE函数时要注意,它是大小写不敏感的(取决于表的排序规则),并且在替换长文本字段时也要关注字符集是否一致。只要提前确认数据和备份,用一条SQL就能轻松完成MySQL表中的字符串替换。