如何解决在SQL表中相互替换字符串的优化方法
问题陈述: 在具有大量数据和多种情况的SQL表中寻找相互替换字符串的优化方法。
考虑一下,我有一张桌子上的城市
我需要用德里替换班加罗尔,而用班加罗尔替换德里,类似地,可能还有其他情况。
我知道我们可以在更新中使用大小写替换表中的数据。有没有更好的方法可以使用Replace()函数或在单个更新中执行其他任何操作??
解决方法
一种替代方法是创建一个临时表,类似
create table #tmpReplace(OriginalValue varchar(200),NewValue varchar(200))
并与您的表进行内部联接。优点是更新要简单得多。缺点是,您仍然必须填充此表。
例如:
update yt
set yt.Name = tmp.NewValue
from dbo.YourTable yt inner join #tmpReplace tmp on tmp.Name = OriginalValue
,
老实说,最简单的方法似乎是一个CASE
表达式:
SELECT ID,CASE Name WHEN 'Bangalore' THEN 'Delhi'
WHEN 'Delhi' THEN 'Bangalore'
...
ELSE Name
END AS Name
FROM dbo.YourTable;
,
我建议在查询中使用“替换”值创建一个派生表:
update t
set t.name = v.newvalue
from t join
(values ('Delhi','Bangalore'),('Bangalore','Delhi'),. . .
) v(oldvalue,newvalue)
on v.oldvalue = t.name;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。