SQL Server - 取百分比至小數點兩位

當利用SQL直接將兩欄位型態為numeric(17,2)做相除後,用round取到小數點第二位,會得到

一個傻眼的數字,那就是小數點第三位開始都是為0,此時如果我們想把這些0給拿掉的話,

可以再利用轉型的方式(流失有效位數)來得到一個漂亮的數值。

以一個範例做示範

--輸出結果 3.0954931151872364
select (
  (convert(numeric(17,2),19681000)-convert(numeric(17,2),19071776))
  /convert(numeric(17,2),19681000)
)*100

加上round函式至小數點第二位做四捨五入
--輸出結果 3.1000000000000000
select round((
  (convert(numeric(17,2),19681000)-convert(numeric(17,2),19071776))
  /convert(numeric(17,2),19681000)
)*100,2)

將現有型態為numeric(17,2)數值轉換成float浮點數
--輸出結果 3.1
select convert(float,round((
  (convert(numeric(17,2),19681000)-convert(numeric(17,2),19071776))
  /convert(numeric(17,2),19681000)
)*100,2))

最後將原本的數值再轉換成一numeric(17,2),保留小數點後有兩位數值
--輸出結果 3.10
select convert(numeric(17,2),convert(float,round((
  (convert(numeric(17,2),19681000)-convert(numeric(17,2),19071776))
  /convert(numeric(17,2),19681000)
)*100,2)))

留言