我是用自定义函数,因为这个数位是要配制的 :(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
那这个就要用case when 来做了
用case when怎么做呢,是判断取值后的小数位数吗?
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
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 列举
比如取2位
dec(18,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
用case when怎么做呢,是判断取值后的小数位数吗?
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
不用判断,而且用float 位数不好控制哦直接decimal (10,2) 这个不好吗?
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 列举