在sql中替换电子邮件地址的域部分

时间:2015-10-16 19:12:28

标签: sql sql-server

我有一个包含电子邮件地址的用户表。

在开发过程中,我们不希望向这些用户发送电子邮件,同时我们也希望使用这些数据。

我想替换电子邮件地址的所有域名部分,如:

john.smith@microsoft.com

john.smith@local.com

我想在表格上运行更新语句来执行此操作。

之前我使用过REPLACE,但我猜是需要一个正则表达式?

2 个答案:

答案 0 :(得分:2)

使用CHARINDEX获取@索引,LEFT以获取电子邮件的一部分并连接local.com

CREATE TABLE #tab(email NVARCHAR(100));

INSERT INTO #tab
VALUES ('john.smith@microsoft.com');

UPDATE #tab
SET email = CONCAT(LEFT(email, CHARINDEX('@', email)), 'local.com');

SELECT *
FROM #tab

<强> LiveDemo

如果您使用低于2012的版本,则需要与+

连接
UPDATE #tab
SET email = LEFT(email, CHARINDEX('@', email)) + 'local.com';

答案 1 :(得分:0)

正则表达式解决方案

CREATE TABLE tab(email text);

INSERT INTO tab
VALUES ('john.smith@microsoft.com');

UPDATE tab set email = regexp_replace(email, '(\S+)@\S+', '\1@local.com');