|
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) as begin 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) end go
|