SQL获取字段中的数字

本文介绍了如何使用SQL创建函数来提取字符串中的数字和非数字部分。通过`PATINDEX`和`STUFF`函数组合,可以实现从字符串中提取连续数字序列。示例展示了从' test12tt456 '中提取出12和456的过程,以及如何获取所有非数字字符的字符串。这些函数对于处理包含混合字符的数据非常有用。
摘要由CSDN通过智能技术生成

sql获取数字:只是将字符串中所有的数字组织在一起,比如“test12tt456”,返回的是12456

复制代码

复制代码

create function dbo.F_Get_Number (@S varchar(100))
returns int
AS 
begin
    while PATINDEX('%[^0-9]%',@S)>0
          begin
                set @s=stuff(@s,patindex('%[^0-9]%',@s),1,'')
          end
    return cast(@S as int)
end
Go

复制代码

 

复制代码

若是想从“test12tt456”取到12 和456两个数字,则为:

复制代码

复制代码

declare @str varchar(100),@tmp varchar(101),@i int

set @str='sddfd123fddfd56fddf78'
set @tmp=@str+'a'

while patindex('%[0-9]%',@tmp)>0
begin
set @i=1
while 1=1
begin
if isnumeric(substring(@tmp,patindex('%[0-9]%',@tmp)+@i,1))=0 break
set @i=@i+1
end
print substring(@tmp,patindex('%[0-9]%',@tmp),@i)
set @tmp=stuff(@tmp,patindex('%[0-9]%',@tmp),@i,'')
end

复制代码

 

复制代码

/*
123
56
78
*/

sql获取非数字:

复制代码

复制代码

create function dbo.F_Get_NANnumber (@S varchar(100))
returns varchar(500)
AS 
begin
    while PATINDEX('%[0-9]%',@S)>0
          begin
                set @s=stuff(@s,patindex('%[0-9]%',@s),1,'')
          end
    return @s
end
GO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值