在Sql中替换@之后的所有电子邮件地址

时间:2015-08-21 06:59:50

标签: sql-server tsql

我有一个电子邮件列表。我想更改所有这些内容以测试我的测试系统的电子邮件,例如John@gmail.com到john@test.com。 我不想使用实际的电子邮件,因为它会产生问题。是否可以在单个查询或存储过程中一次更改所有电子邮件。

7 个答案:

答案 0 :(得分:8)

我试过这个并且它完美无缺。

 UPDATE myTable  SET UserEMail = 
 (SELECT SUBSTRING(UserEMail, 0, PATINDEX('%@%',UserEMail)) + '@example.org' 
 from myTable U WHERE U.UserID = myTable.UserID)

答案 1 :(得分:7)

试试这个

UPDATE users SET email=REPLACE(email, SUBSTRING(email,INSTR(email,'@')+1),
'example.com')

答案 2 :(得分:3)

在表格结构中添加一列,并将其定义为:CONCAT(SUBSTRING([old_column],0,CHARINDEX('@',[old_column])),'@test.com') AS [new_column]

请参阅M.Ali的答案,根据旧列添加新列: Alter a Table by adding a new column whose value depends on another column

如果您使用的是早于+ and ISNULL的SQL Server版本,请使用CONCAT代替SQL Server 2012

答案 3 :(得分:1)

使用STUFFLEFT字符串函数。试试这个

DECLARE @emails VARCHAR(200) = 'John@gmail.com'

SELECT Stuff(@emails, Charindex('@', @emails), Len(@emails), '') + '@test.com'

SELECT LEFT(@emails, Charindex('@', @emails)-1) + '@test.com' 

答案 4 :(得分:1)

尝试以下代码段 -

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;    

答案 5 :(得分:1)

这个对我有用:

UPDATE [TABLE] [EMAIL] = REPLACE([EMAIL], '@company.com', '@test.com')

答案 6 :(得分:0)

UPDATE employees SET email=REPLACE(email, SUBSTR(email,INSTR(email,'@')+1),'test.com');