html截取字符串中数字部分,获取字符串中截取第一个纯数字部分

由网上查找,根据工作需要进行修改

1.[代码][SQL]代码

/*

* 从字符创中截取数字部分,只截取第一个数字部分

* a2b3c4 只截取 2

*/

alter function dbo.f_GetNumInStr

(@Str varchar(200))

returns varchar(50)

as

begin

declare @Result varchar(50)

set @Result = ''

select @Str = LTRim(RTrim(@Str))

declare @i as int

declare @j as int

declare @k1 as int

declare @k2 as int

set @i = 1 --循环开始位置

set @j = len(@Str) --循环结束位置

set @k1 = 0 --记录数字开始的位置

set @k2 = 0 --记录数字结束的位置

while @i <= @j and isnull(@Result,'') = '' --在结束位置前,且未取到数字

begin

--判断当前位置是否为数字

if (substring(@Str , @i , 1) between '0' and '9') or (substring(@Str , @i , 1) = '.') or (substring(@Str , @i , 1) = '%')

or (substring(@Str , @i , 1) = '+') or (substring(@Str , @i , 1) = '-') --允许判断小数

begin

if @k1 = 0 --如果是第一次取到数字,即为数字开始位置

set @k1 = @i

if @i = @j --已循环到最后位置

begin

set @k2 = @j --最后位置是数字

set @Result = substring(@Str , @k1 , (@k2 - @k1 + 1)) --根据开始和结束位置获取数字

end

end

else --当前位置非数字部分

begin

if @k1 > 0 --如果已取到开始位置

begin

set @k2 = @i - 1 --上一个位置为数字部分结束

set @Result = substring(@Str , @k1 , (@k2 - @k1 + 1))

end

--取到非数字,一次取值结束,初始化数字位置

set @k1 = 0

set @k2 = 0

end

--向后一位取数

set @i = @i + 1

end

return @Result

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值