在 SQL Server 中替换整个表中的字符
Posted
技术标签:
【中文标题】在 SQL Server 中替换整个表中的字符【英文标题】:Replace character in whole table in SQL Server 【发布时间】:2017-04-13 08:16:51 【问题描述】:我想问一下如何替换整个表格中的 1 个字符?
我想替换 ©
的字符并将其更改为 Š
我找到了:http://www.sqlteam.com/article/using-replace-in-an-update-statement
我阅读了很多工作人员,但我发现在整个表中仅替换一列字符的代码。我尝试将列的名称添加到行中,但这不起作用..
我有:
Column1 Column2 Column3
©pple ©og ©ook
我需要:
Column1 Column2 Column3
Špple Šog Šook
感谢您的意见
【问题讨论】:
Column1, Column2, Column3
的数据类型是什么?
【参考方案1】:
您可以在UPDATE
语句中一次更新多个字段。
UPDATE dbo.authors
SET city = replace(city, 'Salt', 'Olympic')
, city2 = replace(city2, 'Salt', 'Olympic')
, city3 = replace(city3, 'Salt', 'Olympic')
, ...
【讨论】:
【参考方案2】:如果Column1, Column2, Column3
属于NVARCHAR
类型,那么您必须在每个字符串字面量前加上N
,例如:
UPDATE mytable
SET Column1 = REPLACE(Column1, N'©', N'Š'),
Column2 = REPLACE(Column2, N'©', N'Š'),
Column3 = REPLACE(Column3, N'©', N'Š')
Demo here
【讨论】:
【参考方案3】:Update table
set col1=replace(col1,'©','Š' ),col2=replace(col2,'©','Š' ),col3=replace
(col3,'©','Š' )
...colN=replace(colN,'©','Š' )
【讨论】:
【参考方案4】:虽然其他答案,但回答您的特定问题..使用下面的方法将使用更少的 Tlog 并且会更有效,特别是如果您的列非常大(Varchar(max),Nvarchar(max)
update table
set col1.WRITE('Š',0,1),
col2.WRITE('Š',0,1) and so on
【讨论】:
有趣的方法。 TBH 我不知道这种WRITE
语法。但是,这将要求每列都具有此值,否则将覆盖另一个字符。也只会替换第一个字符,因此如果多个字符出现在随机位置,您可能最终需要做更多的工作才能让这个WRITE
工作。如果这是一次性更新,我不会遇到麻烦。不过,感谢这种替代方法。看来我仍然每天都在学习有关 SQL 的新东西。
@Jens,是的,它完全按照你说的做,但你也可以使用替换和子串的东西以上是关于在 SQL Server 中替换整个表中的字符的主要内容,如果未能解决你的问题,请参考以下文章
如何在SQL Server 2012中动态替换表中的所有值?