如何根据替换表替换字符?

时间:2019-06-14 05:49:07

标签: sql sql-server sql-server-2019

我有一个包含以下列的表:

find char(1)
replace varchar(2)

其中的一些数据是:

find replace
------------
ä    ae
ö    oe
ü    ue
ß    ss

我有一个存储过程,可以根据60000多个行生成XML内容(大约30MB)。内容基于各种表,例如,一个表包含客户名称。该列可能包含上面的一个或多个可替换字符。

如何编写一个使用上表替换字符串字符(作为参数传递)的函数?

1 个答案:

答案 0 :(得分:1)

以下脚本将指导您实现所需的结果。请根据您的查找表调整表和列的名称-

DECLARE @LookUp TABLE(
    find VARCHAR(MAX),
    replace VARCHAR(MAX)
)
INSERT INTO @LookUp (find,replace) 
VALUES
('ä','ae'),
('ö','oe'),
('ü','ue'),
('ß','ss')


DECLARE @testVal VARCHAR(100)
SET @testVal = 'ä Test ö Test2 ü Test3 ß Test4'
SELECT @testVal = REPLACE(@testVal, find, replace) FROM (SELECT find,replace FROM  @LookUp) list
SELECT @testVal;