日期:2014-05-18  浏览次数:20587 次

怎样去掉小数点后多余的零
比如12.20,s?q?l中有这样的函数吗?

------解决方案--------------------
SQL code
create function rtrim0(@val numeric(10,2))
    returns varchar(20)
as
begin
  return left(@val,len(@val)-patindex('%[^0]%.%',reverse(@val))+1)
end
go

select dbo.rtrim0(12.20)

------解决方案--------------------
修正一下,1楼没考虑小数点后面全是0的情况
SQL code
create function rtrim0(@val numeric(18,5))
    returns varchar(20)
as
begin
  return 
    case 
      when @val=cast(@val as int)
        then ltrim(cast(@val as int))
      else
        left(@val,len(@val)-patindex('%[^0]%.%',reverse(@val))+1)
    end
end
go

select dbo.rtrim0(12.20)

------解决方案--------------------
SQL code

declare @d decimal(10,2) 
set @d =  12.20

select convert(float,@d)