Sql server 在Sql中替换@之后的所有电子邮件地址
我有一份电子邮件清单。我想把它们全部改为测试我的测试系统的电子邮件,例如。John@gmail.com到john@test.com.Sql server 在Sql中替换@之后的所有电子邮件地址,sql-server,tsql,Sql Server,Tsql,我有一份电子邮件清单。我想把它们全部改为测试我的测试系统的电子邮件,例如。John@gmail.com到john@test.com. 我不想使用实际的电子邮件,因为它会产生问题。是否可以在单个查询或存储过程中一次更改所有电子邮件 使用填充或左字符串函数。试试这个 DECLARE @emails VARCHAR(200) = 'John@gmail.com' SELECT Stuff(@emails, Charindex('@', @emails), Len(@emails), '') + '@
我不想使用实际的电子邮件,因为它会产生问题。是否可以在单个查询或存储过程中一次更改所有电子邮件 使用
填充
或左
字符串函数。试试这个
DECLARE @emails VARCHAR(200) = 'John@gmail.com'
SELECT Stuff(@emails, Charindex('@', @emails), Len(@emails), '') + '@test.com'
SELECT LEFT(@emails, Charindex('@', @emails)-1) + '@test.com'
在表结构中添加一列并将其定义为:
CONCAT(子字符串([old_column],0,CHARINDEX('@',[old_column]),'@test.com')作为[new_column]
请参考M.Ali的回答,在旧列的基础上添加新列:
如果您使用的sql server版本早于sql server 2012,请使用
+和ISNULL
而不是CONCAT
,请尝试以下代码片段-
create table #email (emailid varchar(20));
insert into #email
select 'john@gmail.com' union
select 'john@yahoo.co.in' union
select 'deepanshu.kalra@outlook.com'
select * from #email;
select replace(emailid,left(substring(emailid,charindex('@',emailid)+1,len(emailid)),charindex('.',substring(emailid,charindex('@',emailid)+1,len(emailid)))-1),'test' from #email;
我试过这个,效果很好
UPDATE myTable SET UserEMail =
(SELECT SUBSTRING(UserEMail, 0, PATINDEX('%@%',UserEMail)) + '@example.org'
from myTable U WHERE U.UserID = myTable.UserID)
试试这个
UPDATE users SET email=REPLACE(email, SUBSTRING(email,INSTR(email,'@')+1),
'example.com')
这个对我很有用:
更新[表格][电子邮件]=REPLACE([电子邮件],'@company.com','@test.com')旁注:永远不要将邮件发送到
@test.com
:这是一个真实的域,邮件将由其邮件服务器接收。旁注2:example.com
是一个专门用于这些目的的域。为什么要添加新列?如果在现有的版本中可能的话。@Abdul是的,您也可以这样做。我想你也会需要更早的电子邮件,这可能是一个好主意,保持较早的电子邮件。此外,在本例中,出于性能原因,请使用CHARINDEX而不是PATINDEX。我的电子邮件id是deepanshu
kalra@outlook
com。还有,为什么我们要使用PATINNDEX查找字符?@deepanshukalla-感谢您识别了未命中的字符,现在更改了逻辑。我认为它需要一个扩展:查询中的错误(7):错误:函数instr(字符变化,未知)不存在
。。哎呀!问题是关于。我喜欢这个!谢谢!工作起来很有魅力!小心使用PATINDEX,因为如果没有匹配项,它将返回0。
UPDATE employees SET email=REPLACE(email, SUBSTR(email,INSTR(email,'@')+1),'test.com');