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