Rob*_*obH 6 sql sql-server-2008
我需要用一些映射的字符替换字符串中的字符列表.
我有一个带有2列的'dbo.CharacterMappings'表:'CharacterToFilter'和'ReplacementCharacter'.
假设此表中有3条记录:
Filter Replacement
$ s
@ a
0 o
Run Code Online (Sandbox Code Playgroud)
如何根据这些映射替换字符串中的所有过滤字符?
即'Hell0 c @ t $'需要成为'Hello cats'.
我不能想到任何方法这样做而不诉诸表变量然后循环它.即具有带'count'列的表变量,然后使用循环根据此列一次选择1行.然后我可以使用REPLACE函数一次更新一个字符.
编辑:我应该注意,我总是想要删除这些字符(我不需要担心$ 5 - > s5).
pod*_*ska 12
declare @s varchar(50)= 'Hell0 c@t$'
select @s = REPLACE(@s, CharacterToFilter, ReplacementCharacter)
from CharacterMappings
select @s
Run Code Online (Sandbox Code Playgroud)
你可以创建一个函数:
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
Run Code Online (Sandbox Code Playgroud)
然后这个
select dbo.[ReplaceAll]('Hell0 c@t$');
Run Code Online (Sandbox Code Playgroud)
回报 Hello cats
| 归档时间: |
|
| 查看次数: |
16202 次 |
| 最近记录: |