sql的四舍六入五成双的函数 (1)

--drop function MyRound
create   function   MyRound(@num   numeric(20,10),@i   int) 
--@i保留的小数位 
--@num传入的数据 
returns   varchar(20) 
as 
begin 
declare   @numtemp   numeric(20,10)
declare   @result   varchar(20) 
set   @numtemp=abs(@num)*power(10,@i+1) 
select   @numtemp=(case   when   floor(@numtemp)-floor(@numtemp/10)*10=5 
                                            then   (case   when   @numtemp-floor(@numtemp)=0 
                                                                  then   (case   when   cast(floor(@numtemp/10)   as   int)%2=0 
                                                                                        then   floor(@numtemp/10)/power(10,@i) --有效数字后一位为5,前一位为偶,后面没有非零
                                                                                        else   round(@numtemp/power(10,@i+1),@i)-- 有效数字后一位为5,前一位为奇,后面没有非零
                                                                                          end) 
                                                                  else   round(@numtemp/power(10,@i+1),@i) --有效数字后一位为5,后面有非零数值
                                                                  end) 
                                              else   round(@numtemp/power(10,@i+1),@i) --有效数字后一位不是5
                                              end) 
set   @result=(case   when   @num> 0   then   str(@numtemp,20,@i)   else   str(0-@numtemp,20,@i)   end) 
return   @result 
end

转载于:https://my.oschina.net/qihaitao/blog/395562

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值