alter function fn_num(
@str varchar(60)
)
returns varchar(60)
as
begin
declare @r varchar(60)
declare @t varchar(60)
set @t=''
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=left(@str,PATINDEX('%[^0-9.]%',@str)-1)
set @str=stuff(@str,1,PATINDEX('%[^0-9.]%',@str)-1,'')
end
else
begin
set @r=@str
set @str=''
end
--判断小数位长度,决定取舍
if charindex('.',@r)>0
if charindex('.',@t)>0
begin
if len(stuff(@r,1,charindex('.',@r)-1,''))>len(stuff(@t,1,charindex('.',@t)-1,''))
set @t=@r
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