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位小數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM