sql server数据库实现保留指定位数小数的函数

Posted 水狼一族

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server数据库实现保留指定位数小数的函数相关的知识,希望对你有一定的参考价值。

有时候需要对一个特定的含有小数点的数字保留指定位数,比如“123.123600”。

在数据库中以函数的形式实现如下:

USE [数据库名称]
GO
/****** Object:  UserDefinedFunction [dbo].[AvgLimit]    Script Date: 2016/12/29 11:30:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create function [dbo].[AvgLimit](@strength numeric(20,6),@numlimit int)

Returns varchar(30)

As 

Begin

   Declare @avg numeric(20,6)
   Declare @avgStr varchar(30)
 
   Set @avg= round(@strength,@numlimit)
   Set @avgStr= convert(varchar(30),@avg)
   if @numlimit=0
     set  @avgStr = substring(@avgStr,0,len(@avgStr)-6)
   if @numlimit>0
   set @avgStr = substring(@avgStr,0,len(@avgStr)-5+@numlimit)
   --substring(@avgStr,0,len(@avgStr)[email protected])
Return  @avgStr

End

举例说明:

--保留0位小数,结果:123
select [dbo].[AvgLimit](123.123600,0)
--保留1位小数,结果:123.1
select [dbo].[AvgLimit](123.123600,1)
--保留2位小数,结果:123.12
select [dbo].[AvgLimit](123.123600,2)
--保留3位小数,结果:123.124
select [dbo].[AvgLimit](123.123600,3)
--保留4位小数,结果:123.1236
select [dbo].[AvgLimit](123.123600,4)
--保留5位小数,结果:123.12360
select [dbo].[AvgLimit](123.123600,5)

注意:最多只能保留6位小数,因为创建函数的时候传递的参数@strength numeric(20,6),只保留6位小数

以上是关于sql server数据库实现保留指定位数小数的函数的主要内容,如果未能解决你的问题,请参考以下文章

Java 数据格式化&小数点后保留指定位数

SQL Server 数值四舍五入,小数点后保留2位

c语言如何控制小数位数?

c语言如何控制小数位数

SQL Server里如何把查询出来结果的小数点去掉

SQl Server 函数篇 数学函数,字符串函数,转换函数,时间日期函数