更新字符串列表中,指定位置的字符串


/*--更新字符串列表中,指定位置的字符串

 更新字符串列表中,指定位置的字符串为新的值
 如果位置超出范围,则不做更新

--邹建 2004.07(引用请保留此信息)--
*/

/*--调用示例

 select dbo.f_updatestr('001|002|003',3,'00a','|')
--
*/
create function f_updatestr(
@s varchar(8000),
@pos int,
@newstr varchar(100),
@spliststr varchar(10--字符串列表的分隔符
)returns varchar(8000)
as
begin
 
declare @i int,@ilen int
 
--|001|002|003|
 select @i=charindex(@spliststr,@spliststr+@s)
  ,
@ilen=len(@spliststr)
 
while @i>0 and @pos>1
  
select @i=charindex(@spliststr,@s,@i)+@ilen
   ,
@pos=@pos-1
 
return(case @i when 0 then @s else stuff(@s,@i,charindex(@spliststr,@s+@spliststr,@i)-@i,@newstrend)
end
go


posted @ 2008-11-26 08:48  roboth  阅读(189)  评论(0编辑  收藏  举报