我是想要在小数位数不足时,用0代替。。
我试了Round函数,它不会用0代替不足的小数位数。请问要如何个怎么补足不足的位数呢?

解决方案 »

  1.   

    用dec来做就行了
    比如取2位
    dec(18,2)
      

  2.   


    我是用自定义函数,因为这个数位是要配制的 :(ALTER function [dbo].[NumberRound](@value float)  returns float
    as
    begin
    declare @RoundValue int
    set @RoundValue=(select [Value] from Sys_Parameters where PID='NumberRound')return round(@value,@RoundValue)
    end
    GO
      

  3.   

    那这个就要用case when 来做了 
      

  4.   


    用case when怎么做呢,是判断取值后的小数位数吗?
      

  5.   

    ALTER function [dbo].[NumberRound](@value float)  returns DEC(18,2)
    as 
    begin 
    declare @RoundValue int 
    set @RoundValue=(select TOP 1 COVNERT(DEC(18,2),[Value]) from Sys_Parameters where PID='NumberRound') return @RoundValuE
    end 
    GO
      

  6.   


    不用判断,而且用float 位数不好控制哦直接decimal (10,2) 这个不好吗?
      

  7.   

    decimal (10,2);2 这个值不要从数据库里获取的,能动态定义参数的长度吗?
      

  8.   

    decimal (10,2);2 这个值是要从数据库里获取的,能动态定义参数的长度吗?不要意思,楼上发错了。
      

  9.   

    ALTER function [dbo].[NumberRound](@value float)  returns float 
    as 
    begin 
    declare @RoundValue int 
    set @RoundValue=(select [Value] from Sys_Parameters where PID='NumberRound') return (case @RoundValue when 1 then cast (@value as decimal (10,1)) when 2 then cast (@value as decimal (10,2)) when .. end)
    end 
    GO
    case when  列举