可以使用MySQL的正则表达式替换函数REGEXP_REPLACE()来实现:

假设要替换的手机号在phone字段中,所在的表为users,则可以使用如下语句:

UPDATE users SET phone = REGEXP_REPLACE(phone, '([0-9]{3})[0-9]{5}([0-9]{3})', '\\1*****\\2')

上述语句中的正则表达式([0-9]{3})[0-9]{5}([0-9]{3})表示匹配一个包含11位数字的字符串,并将其中第4-8位数字替换为5个*号。其中,([0-9]{3})表示匹配前三位数字,[0-9]{5}表示匹配中间的5位数字,([0-9]{3})表示匹配后三位数字。\\1\\2表示正则表达式中第一个和第二个子表达式匹配的内容,即前三位和后三位数字。

注意,上述语句只会将符合条件的记录中的手机号替换掉,如果某个记录中没有手机号,则该记录不会受到影响。另外,上述替换操作是不可逆的,因此请在执行前务必确认操作无误。


原文地址: https://www.cveoy.top/t/topic/fjPf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录