首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何替换SQL字段值

如何替换SQL字段值
EN

Stack Overflow用户
提问于 2013-02-04 19:53:03
回答 4查看 131.3K关注 0票数 32

我真的不知道该怎么做,我对SQL还是个新手。在我的例子中我应该使用substring还是replace

我在我的数据库中有一个名为“电子邮件”的字段,现在我想编辑所有以"email.com“结尾的电子邮件到"email.org”。怎么办?

EN

回答 4

Stack Overflow用户

发布于 2013-02-04 19:55:46

这取决于你需要做什么。您可以使用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()将返回email值的开头,不带最终的.com,然后将.org连接到末尾。这可以防止替换字符串中其他位置的.com

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

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

这将删除最后一个字符(即最后一个.com的起始位置)之前第三个字符的位置上的4个字符,并插入.org

有关此方法的信息,请参阅SQL Fiddle with Demo

票数 48
EN

Stack Overflow用户

发布于 2013-02-04 19:59:07

你可以直接使用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中的工作情况。

票数 8
EN

Stack Overflow用户

发布于 2013-02-04 20:06:00

要避免将包含john.comrad@email.com.com的名称更新为john.orgrad@email.org,您可以执行以下操作:

UPDATE Yourtable
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14686204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档