我遇到正则表达式更新问题。您看到我正在尝试更新:
011013092949@boxyAa9ealA949ervice49.com
211013092923@bxod.com
343232303923@dony.com
结果我希望看到这样的结果:
011013092949@boxy.com
211013092923@boxy.com
343232303923@boxy.com
我已经尝试过这样的更新程序,但它根本不起作用。
update dbo.boxy_Membership
set Email like =('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
[0-9]@boxy.com%')
where Email like('%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]@%')
and Email not like ('%@boxy.com')
答案 0 :(得分:2)
您可以使用字符串操作设置Email
值:
update dbo.boxy_Membership
set Email = LEFT(Email,CHARINDEX('@',Email)-1)+'boxy.com'
where Email LIKE '%[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]@%'
and Email not like ('%@boxy.com')
如果@
之前的位数不变,但可以根据您的WHERE
标准清除,则可以进一步简化:
update dbo.boxy_Membership
set Email = LEFT(Email,12)+'boxy.com'
where Email LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]@%'
and Email not like ('%@boxy.com')
答案 1 :(得分:0)
如果没有其他有效的电子邮件服务器,我会将@
字符替换为@boxy.com
之后的所有内容。
create table _temp (test varchar(50))
insert into _temp values('011013092949@boxyAa9ealA949ervice49.com')
insert into _temp values('211013092923@bxod.com')
insert into _temp values('343232303923@dony.com')
select replace(test, SUBSTRING(test, charindex('@', test)+1, 40), 'boxy.com') from _temp
drop table _temp