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

时间:2015-01-26 13:19:31

标签: sql string sql-server-2008 replace wildcard

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

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

然而,第二个查询不起作用。是否只有拼写错误或使用此代码无法实现任务?我想对应该替换的字符集使用通配符。

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

它返回:

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

1 个答案:

答案 0 :(得分:1)

您可以定义要替换的所有变量,并在表中替换使用它。

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中,您可以替换所有不需要的字符。

更新以替换表格中的数据

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