T-SQL 用通配符替换多个值

T-SQL Replace Multiple Values with Wildcards

我想替换字符 ,/。我可以这样做:

DECLARE @OMG VARCHAR(200)
SET @OMG = 'ABC,DE/F'
SELECT REPLACE(REPLACE(@OMG,'/','|') ,',','|')

但是第二个查询不起作用。是否只是错字或无法使用此代码完成任务?我想对应该替换的字符集使用通配符。

SELECT REPLACE(@OMG,[,/],'|')

它returns:

Msg 207, Level 16, State 1, Line 7
Invalid column name ',/'.

你可以定义所有要被替换的变量,一个table里面的替换使用它。

create  TABLE #ReplaceStrings (symb VARCHAR(5),replace_char varchar(5))

INSERT INTO #ReplaceStrings
            (symb,replace_char)
VALUES      ('/','|'),(',','|')

DECLARE @OMG VARCHAR(200)

SET @OMG = 'ABC,DE/F'

SELECT @OMG = Replace(@OMG, symb, replace_char)
FROM   #ReplaceStrings

select @OMG

在这里,您可以在单个 replace 中替换所有不需要的字符。

更新: 替换来自 table

的数据
create  TABLE ReplaceStrings (symb VARCHAR(5),replace_char varchar(5))
create  table #table (String varchar(500))
insert into #table values ('ABC,DE/F'),('AB,C,DE/F/')
INSERT INTO ReplaceStrings VALUES ('/','|'),(',','|')

标量函数

Create function replacechar(@Ip_String varchar(500))
returns varchar(500)
begin
SELECT @Ip_String=Replace(@Ip_String, symb, replace_char) 
FROM   ReplaceStrings
return @Ip_String
end

执行函数

select String,dbo.replacechar(String) Replaced_String from #table