MySQL如何批量更新LIKE匹配的邮箱,移除指定字符?
批量更新MySQL邮箱地址移除指定字符
方法一:使用字符串替换(无需正则,适合固定模式)
直接用REPLACE()函数配合原有的LIKE条件即可完成批量更新,操作简单高效:
UPDATE user SET email = REPLACE(email, 'GMSDK', 'GMSD') WHERE email LIKE 'GMSDK%@law.com';
- 逻辑:
REPLACE()会把每个匹配邮箱里的GMSDK替换成GMSD,精准移除目标K字符 WHERE条件确保只更新符合GMSDKxxx@law.com格式的记录,避免误操作其他邮箱
方法二:使用正则表达式(MySQL 8.0+支持)
如果你的MySQL版本是8.0及以上,可以用REGEXP_REPLACE()实现更灵活的正则替换:
UPDATE user SET email = REGEXP_REPLACE(email, '^GMSDK(\\d{3}@law.com)$', 'GMSD\\1') WHERE email REGEXP '^GMSDK\\d{3}@law.com$';
- 正则
^GMSDK(\\d{3}@law.com)$精准匹配GMSDK后接三位数字再到@law.com的邮箱 \\1引用捕获组中\\d{3}@law.com的内容,替换后保留这部分,只去掉前面的K
注意事项
- 低版本MySQL(低于8.0)不支持
REGEXP_REPLACE(),优先用方法一 - 执行更新前建议先跑一遍
SELECT语句确认匹配的记录正确,避免误更新:SELECT email, REPLACE(email, 'GMSDK', 'GMSD') AS new_email FROM user WHERE email LIKE 'GMSDK%@law.com';
内容的提问来源于stack exchange,提问作者Ethan Allen
相关产品推荐
相关产品推荐

