我有一个电子邮件列表。我想更改所有这些内容以测试我的测试系统的电子邮件,例如John@gmail.com到john@test.com。 我不想使用实际的电子邮件,因为它会产生问题。是否可以在单个查询或存储过程中一次更改所有电子邮件。
答案 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)
使用STUFF
或LEFT
字符串函数。试试这个
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');