仅在@符号后更新列值

时间:2016-07-13 05:39:23

标签: sql sql-server-2008 sql-update

我的表格中有一个名为EMAIL的列让我们说有用户的电子邮件:

user123@hotmail.com
user145@yahoo.com

现在,要求是仅更新用户电子邮件的域部分。因此,我需要更新Email符号之后的@列值。

对于上述数据,更新后用户的电子邮件应该是这样的:

user123@gmail.com
user145@gmail.com

2 个答案:

答案 0 :(得分:2)

假设您要更新每个电子邮件地址以拥有Gmail域,您可以使用UPDATE语句而不使用WHERE子句:

UPDATE yourTable
SET EMAIL = LEFT(EMAIL, CHARINDEX('@', EMAIL)-1) + '@' + 'gmail.com'

这也可以写成:

UPDATE yourTable
SET EMAIL = LEFT(EMAIL, CHARINDEX('@', EMAIL)) + 'gmail.com'

答案 1 :(得分:2)

SUBSTRING

的另一种方式
UPDATE TableName SET Email = SUBSTRING(Email, 1, CHARINDEX('@', Email)) + 'gmail.com'

使用给定的样本数据执行:

DECLARE @Employee TABLE (Id INT, Email VARCHAR(100));

INSERT INTO @Employee (Id, Email) VALUES
(1, 'user123@hotmail.com'), (2, 'user145@yahoo.com');

UPDATE @Employee SET Email = SUBSTRING(Email, 1, CHARINDEX('@', Email)) + 'gmail.com'

--SELECT * FROM @Employee