有时候需要对一个特定的含有小数点的数字保留指定位数,比如“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)-6+@numlimit)
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小数保留函数
本文介绍了一个SQL函数[AvgLimit],用于将数值四舍五入到指定的小数位数并返回字符串形式。该函数接受两个参数:一个是要处理的数字,另一个是要保留的小数位数。
2287

被折叠的 条评论
为什么被折叠?



