【发布时间】:2020-05-04 08:50:39
【问题描述】:
我有一个字符串,我想通过引用查找表来替换其中的一些单词
create table LookupTab
(
oldvalue varchar(100),
newvalue varchar(100)
);
insert into LookupTab
values ('Run', 'Run Go'), ('Hide', 'Hide Mask'), ('Go', 'Go Run'), ('Mask', 'Mask Hide')
预期输出
string ='i have to go'
result ='i have to Go Run' <-- it should not again replace the word Run
string ='i have to go and go again'
result ='i have to Go Run and Go Run again'
我尝试过的
CREATE FUNCTION [dbo].[TranslateString]
(@Str nvarchar(max))
RETURNS nvarchar(max)
AS
BEGIN
DECLARE @Result nvarchar(max) = @Str;
SELECT @Result = REPLACE(@Result, Oldvalue, NewValue)
FROM LookupTab;
RETURN @Result;
END
但它再次替换了替换的单词
【问题讨论】:
-
在问题中包含您尝试过的内容。
-
insert的values()部分中的字符串必须用单引号括起来!insert into LookupTab(oldvalue, newvalue) values ('Run', 'Run Go'), ..... -
您的匹配项不区分大小写
go和Go, Go Run。这很重要吗? -
@Zhorov 它并不重要.. 如果我们输入“go”,它应该被替换为 Go Run
标签: sql sql-server replace sql-server-2016