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,@[email protected]) ,@ilen=len(@spliststr) while @i>0 and @pos>1 select @i=charindex(@spliststr,@s,@i)[email protected] ,@[email protected] return(case @i when 0 then @s else stuff(@s,@i,charindex(@spliststr,@[email protected],@i)[email protected],@newstr) end)endgo