T-SQL 小數點轉換百分數

-- =============================================
-- Author:        <Author,,CC>
-- Create date: <Create Date,, 2014-05-26 10:43:07.080>
-- Description:    <Description,,小數點轉換爲百分數,並對第3位進行4舍5入>
-- Environment:    <Version,, Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64))>
-- =============================================

/*------------------------------------------------------------------------
2種思路的計算方法:
1種是直接decimal 類型能夠設置精度爲4,小數位爲2,這樣會自動的把小數爲3的數字進行四捨五入掉
2種是就是咱們對小數點位數進行加法計算來知足達到四捨五入的條件(即變量+0.005)這個時候能夠使用int類型
如下爲實現方法:
--------------------------------------------------------------------------*/
                
-------------------------    方法1    ---------------------------------------
declare @i int = 3
declare @it int = 7

select (@i*1.0)/@it [小數點] 
-- 由於數據類型爲int因此,須要*1.0來進行轉換,若是直接是帶有小數點位數能夠跳過這一步

select ((@i*1.0)/@it)*100 [分子]
--把小數點轉換爲所須要的百分比分子值須要乘以100

select CAST( ((@i*1.0)/@it)*100 as decimal(5,0)) [4舍5入以後2位小數點的百分數]    
--保留2位小數點,也是對小數位進行4舍5入的一步

select LTRIM(CAST( ((@i*1.0)/@it)*100 as decimal(5,0)))+'%'     [百分數]
-- 加%號以合成百分比,也能夠使用下面的方法來進行轉換由於另外的一種方法,只能使用轉換varchar類型

select CAST(CAST( ((@i*1.0)/@it)*100 as decimal(5,0)) as varchar(10))+ '%'  [百分數]

-------------------------    方法2    -----------------------------------------
declare @i int = 3 
declare @it int = 7

select (@i*1.0)/@it    [小數點]
-- 由於數據類型爲int因此,須要*1.0來進行轉換,若是直接是帶有小數點位數能夠跳過這一步

select ((@i*1.0)/@it)+0.005 [4舍5入]
-- 對獲得的結果進行+0.005以取得第三位小數點4四5入的結果

select (((@i*1.0)/@it)+0.005)*100 [帶小數點的分子]
-- *100 把小數點轉換爲百分比的分子

select CAST((((@i*1.0)/@it)+0.005)*100 as int) [分子]
-- 把第2位小數點以後的數字進行截取,轉換爲整數

select CAST(CAST((((@i*1.0)/@it)+0.005)*100 as int) as varchar(10)) + '%' [百分數]
--把整型轉換爲字符型的數據類型,加上百分號

以上方法只是示例求得百分數,實際中可能須要根據數據類型和需求來進行微調spa

相關文章
相關標籤/搜索