create function fn_num(
@s varchar(2000)
)
returns varchar(200)
as 
begin
   declare @r varchar(200)
   set @r=''
   while PATINDEX('%[0-9]%',@s)>0
   begin
      set @r=@r+substring(@s,PATINDEX('%[0-9]%',@s),1)
      set @s=stuff(@s,1,PATINDEX('%[0-9]%',@s),'')
   end
   return @r
end
go--调用
select dbo.fn_num('a2h5我j8 ')
--结果
                                                                                                                                                                                                          
----------------------------------------
258(所影响的行数为 1 行)