基于sql表中的行替换字符串中的字符

基于sql表中的行替换字符串中的字符,sql,sql-server-2008,Sql,Sql Server 2008,我需要用一些映射字符替换字符串中的字符列表 我有一个表“dbo.CharacterMappings”,有两列:“CharacterToFilter”和“ReplacementCharacter” 假设此表中有3条记录: Filter Replacement $ s @ a 0 o 如何根据这些映射替换字符串中的所有筛选字符 i、 “你好c@t$需要变成“你好猫” 我真的想不出任何方法不借助于一个表变量然后循环使用它。也就是说,有一个带有“c

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

我有一个表“dbo.CharacterMappings”,有两列:“CharacterToFilter”和“ReplacementCharacter”

假设此表中有3条记录:

Filter   Replacement    
$        s
@        a
0        o
如何根据这些映射替换字符串中的所有筛选字符

i、 “你好c@t$需要变成“你好猫”

我真的想不出任何方法不借助于一个表变量然后循环使用它。也就是说,有一个带有“count”列的表变量,然后使用循环根据该列一次选择一行。然后我可以使用REPLACE函数一次更新一个字符


编辑:我应该注意,我总是想去掉这些字符(例如,我不需要担心$5->s5)。

您可以创建一个函数:

CREATE FUNCTION [dbo].[ReplaceAll]
(
    @text varchar(8000)
)
RETURNS VARCHAR(8000)
AS
BEGIN
    SELECT @text = 
       REPLACE(@text,cm.Filter, cm.Replacement)
    FROM    CharacterMappings cm;
    RETURN @text
END
那么这个

select dbo.[ReplaceAll]('Hell0 c@t$');

返回猫你好,谢谢。我不知道/从未见过像那样使用替换!这只能在函数或存储过程中使用,但它仍然非常灵活。@LittleBobbyTables带有两个分号,我认为您可以在任何地方使用它?代码将成为函数的一部分,但感谢您指出它。感谢Tim,这帮助我构建了一个大型文本搜索替换。也节省了我的时间。
select dbo.[ReplaceAll]('Hell0 c@t$');