日期:2014-05-17  浏览次数:20495 次

还是刚才Replace替换问题。帮忙看下吧
刚才给的替换的不对。。
DECLARE @str VarChar(1000) 
Set @str = '213,12311213,2131'
Select isnull(stuff(Replace(','+@str,',213',''),1,1,''),'')
如果是这样。得到的结果是:
123112131
我要是结果:
12311213,2131

------最佳解决方案--------------------
create function f_name(@str1 varchar(1000),@str2 varchar(20))
 returns varchar(1000)
 as
 begin
     declare @str varchar(1000)
     select @str='',@str1=@str1+','
     while charindex(',',@str1)>1
     begin
          if(left(@str1,charindex(',',@str1)-1)=@str2)
           set @str1=right(@str1,len(@str1)-charindex(',',@str1))
          else
          begin
           select @str=@str+','+left(@str1,charindex(',',@str1)-1),
            @str1=right(@str1,len(@str1)-charindex(',',@str1))
          end   
     end
     return stuff(@str,1,1,'')
 end
 
 
 DECLARE @str VarChar(1000) ,@str2 varchar(20) 
 select @str = '1,11,222,213,211,2341,342,34531' ,@str2='213' 
 
 
 select dbo.f_name(@str,@str2)
------其他解决方案--------------------
DECLARE @str VarChar(1000) 
 Set @str = '213,12311213,2131'

 select substring(Replace(','+@str+',',',213,',''),2,len(Replace(','+@str+',',',213,',''))-2)
------其他解决方案--------------------
引用:
DECLARE @str VarChar(1000) 
 Set @str = '213,12311213,2131'

 select substring(Replace(','+@str+',',',213,',''),2,len(Replace(','+@str+',',',213,',''))-2)


我试试。你的头像是:我爱罗吧。。

大哥。你能写个函数吗??
函数传递两参数。一个原字符串。一个要替换的字符串。
------其他解决方案--------------------
不行额。。
代码:
DECLARE @str VarChar(1000) 
 Set @str = '1,2,3,4,11,123,121'

 select substring(Replace(','+@str+',',',1,',''),2,len(Replace(','+@str+',',',1,',''))-2)


得到的结果:
,3,4,11,123,121
实际要得到的结果:
2,3,4,11,123,121

大哥。。我的字符串
1、不是固定的。
2、长度也不是固定的。
------其他解决方案--------------------
你是要咋个整?出现213的位置都替换成''  ??
------其他解决方案--------------------
引用:
你是要咋个整?出现213的位置都替换成''  ??

不是。其实就是替换指定的字符串。。
字符串:1,2,3,4,11,123,121。我要替换1.结果应该是:2,3,4,11,123,121
而不是:2,3,4,,23,2
------其他解决方案--------------------
引用:
引用:
你是要咋个整?出现213的位置都替换成''  ??
不是。其实就是替换指定的字符串。。
字符串:1,2,3,4,11,123,121。我要替换1.结果应该是:2,3,4,11,123,121
而不是:2,3,4,,23,2


最后的多打了个逗号。