if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_SetStr]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_SetStr] GO --分段截取函数 CREATE FUNCTION dbo.f_SetStr( @s varchar(8000), --包含数据项的字符串 @pos int, --要更新的数据项的段 @value varchar(100), --更新后的值 @split varchar(10) --数据分隔符 )RETURNS varchar(8000) AS BEGIN DECLARE @splitlen int,@p1 int,@p2 int SELECT @splitlen=LEN(@split+'a')-2, @p1=1, @p2=CHARINDEX(@split,@s+@split) WHILE @pos>1 AND @p1<=@p2 SELECT @pos=@pos-1, @p1=@p2+@splitlen+1, @p2=CHARINDEX(@split,@s+@split,@p1) RETURN(CASE WHEN @p1<@p2 THEN STUFF(@s,@p1,@p2-@p1,@value) WHEN @p2>LEN(@s) THEN @s+@value WHEN @p2=@p1 THEN STUFF(@s,@p1,0,@value) ELSE @s END) END GO
18.分段截取函数
最新推荐文章于 2021-03-23 19:47:05 发布