字符拆分应用实例(字符补位)

本文介绍了一种使用SQL语句实现字符串字符拆分与补位的方法,包括处理不同长度字符串并填充0至指定长度的技术,以及如何在字符串内部多次使用标识符进行拆分与补位的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 作者:htl258(Tony) 标题:字符拆分应用实例 内容:字符串 1,11,111,1111 怎么用sql语句转换为000001,000011,000111,001111 共六位,不足六位的在前面填上0 时间:2009-09-06 09:42 */ --创建自定义函数 If object_id('dbo.fn_split')is not null Drop function dbo.fn_split Go Create function dbo.fn_split ( @str varchar(8000), --输入的字符串 @flag varchar(10), --拆分标识 @num int --补位数量 ) returns varchar(1000) as begin declare @s varchar(1000) --用于存储返回的值 set @str=@str+@flag --将字符串尾加上 while charindex(@flag,@str)>1 --当至少存在一个以上非@flag字符时才循环截取 begin set @s=isnull(@s+@flag,'')+right(replicate('0',@num)+left(@str,charindex(@flag,@str)-1),@num) set @str=stuff(@str,1,charindex(@flag,@str),'') end return @s end go --调用函数 declare @a varchar(50),@b varchar(50) select @a='1,11,111,1111',@b='22/11/223/4/5555/666666///' select dbo.fn_split(@a,',',6) as a,dbo.fn_split(@b,'/',6) as b --结果: /* a b --------------------------- ----------------------------------------- 000001,000011,000111,001111 000022/000011/000223/000004/005555/666666 (1 行受影响) */ --字符串内多个标识符重复去重截取 --创建自定义函数 If object_id('dbo.fn_split')is not null Drop function dbo.fn_split Go Create function dbo.fn_split ( @str varchar(8000), --输入的字符串 @flag varchar(10), --拆分标识 @num int --补位数量 ) returns varchar(1000) as begin declare @s varchar(1000) --用于存储返回的值 set @str=@str+@flag --将字符串尾加上 while charindex(@flag,@str)>0 begin if charindex(@flag,@str)>1 --当至少存在一个以上非@flag字符时才循环赋值 begin set @s=isnull(@s+@flag,'')+right(replicate('0',@num)+left(@str,charindex(@flag,@str)-1),@num) end set @str=stuff(@str,1,charindex(@flag,@str),'') end return @s end go --调用函数 declare @a varchar(50),@b varchar(50) select @a=',,1,11,111,,,,1111',@b='/22/11/223/4/5555//666666///' select dbo.fn_split(@a,',',6) as a,dbo.fn_split(@b,'/',6) as b --结果: /* a b --------------------------- ----------------------------------------- 000001,000011,000111,001111 000022/000011/000223/000004/005555/666666 (1 行受影响) */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值