一尘不染

根据表sql中的行替换字符串中的字符

sql

我需要用一些映射的字符替换字符串中的字符列表。

我有一个表’dbo.CharacterMappings’,其中有2列:’CharacterToFilter’和’ReplacementCharacter’。

假设此表中有3条记录:

Filter   Replacement    
$        s
@        a
0        o

如何根据这些映射替换字符串中的所有过滤器字符?

即“ Hell0 c @ t $”需要成为“ Hello cats”。

我真的想不出任何方法,而不必求助于表变量然后遍历它。即具有一个带有“
count”列的表变量,然后使用循环基于该列一次选择1行。然后,我可以使用REPLACE函数来一次更新一个字符。

编辑:我应该注意,我一直想删除这些字符(例如,我不必担心$ 5-> s5)。


阅读 185

收藏
2021-05-23

共1个答案

一尘不染

declare @s varchar(50)= 'Hell0 c@t$'
select @s = REPLACE(@s, CharacterToFilter, ReplacementCharacter) 
    from CharacterMappings
select @s
2021-05-23