小數位數的四捨五入(Round Off)、無條件進位(Round Up)和無條件捨去(Round Down),要如何利用 T-SQL 語法達到此效果。
ROUND(numeric_expression , length [ ,function ]) 函數
- 函數說明:傳回數值,捨入到指定的長度或有效位數。
- numeric_expression 參數: 這是精確數值或近似數值資料類型類別目錄的運算式,但 bit 資料類型除外。
- length 參數:這是 numeric_expression 捨入的有效位數。length 必須是 tinyint、smallint 或 int 類型的運算式。當 length 是正數時,numeric_expression 會捨入到 length 所指定的十進位數。當 length 是負數時,numeric_expression 會依照 length 所指定,在小數點左側捨入。
- function 參數:這是要執行的作業類型。function 必須是 tinyint、smallint 或 int。當省略 function,或其值為 0 (預設值) 時,會捨入 numeric_expression。當指定 0 以外的值時,會截斷 numeric_expression。
- 上述 MSDN 說明中,捨入是指四捨五入、截斷是指無條件捨去。
CEILING() 函數
- 函數說明:傳回大於或等於指定數值運算式的最小整數。
-- 範例說明:對小數第二位進行,四捨五入、無條件捨去和無條件進位
SELECT
T.Number AS '數字',
ROUND(T.Number,2) AS '四捨五入',
-- ROUND() 的基本使用
ROUND(T.Number,2,1) AS '無條件捨去',
-- 指定 ROUND() 的 function 參數不為 0 ,則會進行無條件捨去
CEILING(T.Number * 100) / 100 AS '無條件進位'
-- 利用 CEILING() 來達到此效果,
-- 假如是要針對小數第三位則乘 1000 ,除1000。
FROM
(
SELECT 100.129 AS Number
UNION ALL
SELECT 100.126
UNION ALL
SELECT 100.125
UNION ALL
SELECT 100.124
UNION ALL
SELECT 100.120
) AS T
沒有留言:
張貼留言