时间: 2021-08-13 作者:daque
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 /*--更新字符串列表中,指定位置的字符串 更新字符串列表中,指定位置的字符串为新的值 即使场所胜过范畴,则不做革新--*/ /*--挪用示例 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