取出一字符串中的数字.
请问怎么样将一字符串中的数字给取出. 
 如:   
 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 " 
 楼主要什么样的结果呢?
------解决方案--------------------顶