加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 13:58:08 所属栏目:MsSql教程 来源:网络整理
导读:今天看了一个叶子的帖子,感觉自己不错 自己动手做了一遍,翻遍查阅以后翻阅。 帖子地址是: 【叶子函数分享五十八】固定长度添加分隔符函数 下面是作者的源码 create ? function ?AddSplitSign?? (?? ????@colname? varchar (8000),?? ????@len? int ?? --

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

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

下面是作者的源码

  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','-%-')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读