zoukankan      html  css  js  c++  java
  • 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)-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位小数

  • 相关阅读:
    HDU 4005 The war
    #undef
    [转载] #define new DEBUG_NEW
    [转载]常用正则表达式
    [百科]
    [转载]
    [转载]
    [转载]
    [百科]
    [转载]VC6中的文件后缀
  • 原文地址:https://www.cnblogs.com/shuilangyizu/p/6232382.html
Copyright © 2011-2022 走看看