我想替换字符,
和/
。我可以这样做:
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 ',/'.
答案 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