我有一个包含电子邮件地址的用户表。
在开发过程中,我们不希望向这些用户发送电子邮件,同时我们也希望使用这些数据。
我想替换电子邮件地址的所有域名部分,如:
john.smith@microsoft.com
带
john.smith@local.com
我想在表格上运行更新语句来执行此操作。
之前我使用过REPLACE,但我猜是需要一个正则表达式?
答案 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');