微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

观贴有感之--【叶子函数分享五十八】固定长度添加分隔符函数

今天看了一个叶子的帖子,感觉自己不错 自己动手做了一遍,翻遍查阅以后翻阅。

帖子地址是:【叶子函数分享五十八】固定长度添加分隔符函数

下面是作者的源码

  1. create function AddSplitSign  
  2. (  
  3.     @colname varchar(8000),  
  4.     @len int  --固定长度   
  5. )  
  6. returns varchar(8000)  
  7. as  
  8. begin  
  9.     declare @j int set @j=ceiling(len(@colname)/(@len*1.0))-1  
  10.     while(@j>0)  
  11.         begin  
  12.             set @colname=stuff(@colname,@len*@j+1,'-')  
  13.             set @j=@j-1  
  14.         end  
  15.     return @colname  
  16. end  

--看完之后自己写了几种不同的实现方式

 =============================================  
-- Author:     eleven  
-- Create date: 2012-06-22  
-- Description: 固定长度添加分隔符函数(正向处理)
-- ============================================= 
if(object_id('addSpiltSignV1') is not null)
drop function addSpiltSignV1
go
create function addSpiltSignV1
(
 @dealString varchar(8000),
 @dealLen int,
 @spiltSign  varchar(10)
)
returns varchar(8000)
as
begin
     declare @j int
     set @j=ceiling(len(@dealString)/(@dealLen*1.0))-1
     declare @i int
     set @i=1
     while @i<=@j
     begin
          set @dealString = stuff(@dealString,@i*@dealLen+1+(@i-1)*len(@spiltSign),@spiltSign)
          --正向添加分隔符之后,长度也会进行相应的增加,处理就没有逆向的时候显得更加容易理解
          set @i=@i+1;
     end
return @dealString
end

--select dbo.addSpiltSignV1('AEB3166CB7C64C5DBF0BF452626E66',4,'#$')
--select dbo.addSpiltSign('AEB3166CB7C64C5DBF0BF452626E66','#$')

-- =============================================   -- Author:     eleven   -- Create date: 2012-06-22 -- Update date: 2012-06-22  -- Description: 固定长度添加分隔符函数(直接截取处理) -- =============================================  if(object_id('addSpiltSignV3') is not null) drop function addSpiltSignV3 go create function addSpiltSignV3 (  @dealString varchar(8000), @dealLen int, @spiltSign  varchar(10) ) returns varchar(8000) as begin             declare @str varchar(8000)             set @str=''             /**1-按预定长度截取 添加分隔符 直到不超过预定长度**/             while len(@dealString)>@dealLen             begin                  set @str=@str+ substring(@dealString,1,@dealLen)+@spiltSign;                  set @dealString = substring(@dealString,@dealLen+1,len(@dealString))             end            /**2-不超过预定长度的字符放置在最后**/           if(@dealString!='')                  set @str=@str+ @dealString;    return @str end --select dbo.addSpiltSignV3('AEB3166CB7C64C5DBF0BF45262','-%-')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐