如何替换sql字段值

时间:2013-02-04 11:53:03

标签: sql sql-server-2008

我真的不知道该怎么做,我对SQL有点新...我应该在我的情况下使用子字符串还是替换

我的数据库中有一封电子邮件,现在我想编辑所有以email.com结尾的电子邮件到email.org。我该怎么办?

4 个答案:

答案 0 :(得分:32)

这取决于你需要做什么。您可以使用replace,因为您要替换值:

select replace(email, '.com', '.org')
from yourtable

然后使用新结尾UPDATE你的桌子,然后你会使用:

update yourtable
set email = replace(email, '.com', '.org')

您还可以通过查看电子邮件值的最后4个字符来扩展此功能:

update yourtable
set email = replace(email, '.com', '.org')
where right(email, 4) = '.com'

然而,replace()的问题是.com可能会在电子邮件的其他位置而不仅仅是最后一个位置。因此,您可能希望以下列方式使用substring()

update yourtable
set email = substring(email, 1, len(email) -4)+'.org'
where right(email, 4) = '.com';

请参阅SQL Fiddle with Demo

使用substring()将返回电子邮件值的开头,而不是最终.com,然后将.org连接到结尾。这可以防止在字符串中的其他位置替换.com

或者您可以使用stuff(),它允许您同时删除和插入:

update yourtable
set email = stuff(email, len(email) - 3, 4, '.org')
where right(email, 4) = '.com';

这将删除最后一个字符前面第三个字符位置的4个字符(这是最终.com的起始位置),然后插入.org

此方法也请参见SQL Fiddle with Demo

答案 1 :(得分:4)

您可以使用REPLACE

UPDATE myTable SET emailCol = REPLACE(emailCol, '.com', '.org')`.

但考虑到john.comrad@some.company.com等电子邮件地址将更新为john.orgrad@some.organy.org

如果您想要更安全,则应使用RIGHT检查最后4个字符,然后手动将.org添加到SUBSTRING。请注意使用UPPER来搜索.com结尾不区分大小写。

UPDATE myTable 
SET emailCol = SUBSTRING(emailCol, 1, LEN(emailCol)-4) + '.org'
WHERE UPPER(RIGHT(emailCol,4)) = '.COM';

请参阅此SQLFiddle

答案 2 :(得分:0)

要避免包含.com john.comrad@email.comjohn.orgrad@email.org的更新名称,您可以这样做:

UPDATE Yourtable
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org')

答案 3 :(得分:-2)

尝试此查询,它将以.com

更改记录
 UPDATE tablename SET email = replace(email, '.com', '.org') WHERE  email LIKE '%.com';