T-SQL将多个值替换为通配符
我想替换字符和/。我可以这样做:T-SQL将多个值替换为通配符,sql,string,sql-server-2008,replace,wildcard,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 n
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 ',/'.
您可以定义要替换的所有变量,表内的替换使用它
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
在这里,在一次替换中,您可以替换所有不需要的字符
更新:替换表中的数据
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 ('/','|'),(',','|')
标量函数
执行函数
select String,dbo.replacechar(String) Replaced_String from #table
第二种选择?你是说第二次替换吗?这对我有用。你能把你期望的和你得到的打印出来吗?@DLeh我想他指的是第二个问题。我打赌他试图简化REPLACE命令,以便不将第一次调用REPLACE的结果作为参数传递,因此他希望一次性替换'and'。我更新了答案。@DNac不幸的是,这不正确,我想知道REPLACE函数是否可以同时处理所有要替换的字符。谢谢。这很好,谢谢你的回答。顺便问一下,查询知道应该使用ReplaceStrings中的两行是如何发生的?执行计划是什么?我想了解它的原理。@DNac字符串在此查询中将被替换两次。第一行/将被替换,第二行将被替换。始终将最后一行指定给string@OMG那么将得到最终替换的字符串,并且不需要指定任何类型的循环?SQL知道自己应该循环整个ReplaceStrings表?@DNac-不,您不必循环。ReplaceStrings临时表中的所有字符都将被替换。好的,最后一个问题:如果我有其他表中的数据,如何将其与此解决方案联接?例如,从TST中选择*将给我ABC、DE/F。我仍然可以将其连接到带有临时表的解决方案吗?
select String,dbo.replacechar(String) Replaced_String from #table