今天看了一个叶子的帖子,感觉自己不错 自己动手做了一遍,翻遍查阅以后翻阅。
帖子地址是:【叶子函数分享五十八】固定长度添加分隔符函数
下面是作者的源码
- create function AddSplitSign
- (
- @colname varchar(8000),
- @len int --固定长度
- )
- returns varchar(8000)
- as
- begin
- declare @j int set @j=ceiling(len(@colname)/(@len*1.0))-1
- while(@j>0)
- begin
- set @colname=stuff(@colname,@len*@j+1,'-')
- set @j=@j-1
- end
- return @colname
- 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] 举报,一经查实,本站将立刻删除。