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

发表于:2007-07-02来源:作者:点击数: 标签:
if exists (select * from dbo.sysobjects where id = object_id(N@#[dbo].[f_updatestr]@#) and xtype in (N@#FN@#, N@#IF@#, N@#TF@#))drop function [dbo].[f_updatestr]GO /*--更新字符串列表中,指定位置的字符串 更新字符串列表中,指定位置的字符串为新

if exists (select * from dbo.sysobjects where id = object_id(N@#[dbo].[f_updatestr]@#) and xtype in (N@#FN@#, N@#IF@#, N@#TF@#))drop function [dbo].[f_updatestr]GO

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

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

--邹建 2004.07--*/

/*--调用示例

 select dbo.f_updatestr(@#001|002|003|@#,1,@#00a@#,@#|@#)--*/create function f_updatestr(@s varchar(8000),@pos int,@newstr varchar(100),@spliststr varchar(10) --字符串列表的分隔符)returns varchar(8000)asbegin declare @i int,@ilen int

 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,@newstr) end)endgo

 

原文转自:http://www.ltesting.net