首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

取出一字符串中的数字.解决办法

2012-01-31 
取出一字符串中的数字.请问怎么样将一字符串中的数字给取出.如:as2.212afdaw2.12fadfd21dfas得到2.2122.12

取出一字符串中的数字.
请问怎么样将一字符串中的数字给取出.
如:

as2.212af
daw2.12fa
dfd21dfas


得到

2.212
2.12
21



[解决办法]
有意思,抢个SF坐着听...
[解决办法]
用SQL语言来做?
[解决办法]
写个函数取吧

create function fn_num(
@str varchar(60)
)
returns varchar(60)
as
begin
declare @r varchar(60)
set @r= ' '
while PATINDEX( '%[0-9.]% ',@str)> 0
begin
set @str=stuff(@str,1,PATINDEX( '%[0-9.]% ',@str)-1, ' ')
if PATINDEX( '%[^0-9.]% ',@str)> 0
begin
set @r=@r+left(@str,PATINDEX( '%[^0-9.]% ',@str)-1)
set @str=stuff(@str,1,PATINDEX( '%[^0-9.]% ',@str)-1, ' ')
end
else
begin
set @r=@r+@str
set @str= ' '
end
end
return @r
end
go

--调用
select dbo.fn_num( 'as2.212af ')
--结果
2.212



[解决办法]
create function fn_GetNum(@s varchar(8000))
returns varchar(8000)
as
begin
select @s = stuff(stuff(@s, 1, patindex( '%[0-9, .]% ', @s) - 1, ' '),
patindex( '%[^0-9, .]% ', stuff(@s, 1, patindex( '%[0-9, .]% ', @s) - 1, ' ')),
len(@s), ' ')
return @s
end

declare @t table(s varchar(8000))

insert @t select 'as2.212af '
union all select 'daw2.12fa '
union all select 'dfd21dfas '

select dbo.fn_GetNum(s) as result from @t

/*
result
----------
2.212
2.12
21

(所影响的行数为 3 行)
*/
[解决办法]
To: Haiwer(海阔天空) ( ) 信誉:138

select dbo.fn_num( 'as2.212a22f ')
= 2.21222
[解决办法]
如果是 "sf3.456dadef34.32 "
楼主要什么样的结果呢?
[解决办法]

热点排行