分享方式:


ROUND (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

傳回數值,捨入到指定的長度或有效位數。

Transact-SQL 語法慣例

語法

ROUND ( numeric_expression , length [ ,function ] )  

引數

numeric_expression
這是精確數值或近似數值數據類型類別目錄的表達式

length
這是 numeric_expression 捨入到的有效位數。 length 必須是 tinyintsmallintint 類型的運算式。當 length 是正數時,numeric_expression 會捨入到 length 所指定的十進位數。 當 length 是負數時,numeric_expression 會依照 length 所指定的方式,在小數點左側捨入。

函數
這是要執行的作業類型。 function 必須是 tinyintsmallintint。當 function 遭到省略或者值為 0 (預設值) 時,會捨入 numeric_expression。 當指定 0 以外的值時,會截斷 numeric_expression

傳回型別

傳回下列資料類型。

運算式結果 傳回類型
tinyint int
smallint int
int int
bigint bigint
decimalnumeric 類別 (p, s) decimal(p, s)
moneysmallmoney 類別 money
floatreal 類別 float

備註

ROUND 會一律傳回值。 如果 length 是負的,且大於小數點前面的位數,ROUND 會傳回 0。

範例 結果
ROUND(748.58, -4) 0

length 是負數時,不論資料類型為何,ROUND 都會傳回捨入的 numeric_expression

範例 結果
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -3) 導致算術溢位,因為 748.58 預設為 decimal(5,2),而它不可能傳回 1000.00。
若要無條件進位至 4 位數,請變更輸入的資料類型。 例如:

SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3);
1000.00

範例

A. 使用 ROUND 與估計

下列範例顯示利用 ROUND 來示範的兩個運算式,最後一位數永遠是一項估計。

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3);  
GO  

結果集如下所示。

----------- -----------  
123.9990    124.0000      

B. 使用 ROUND 與捨入近似值

下列範例顯示捨入和近似值。

SELECT ROUND(123.4545, 2), ROUND(123.45, -2);  

結果集如下所示。

----------  ----------
123.4500    100.00

C. 利用 ROUND 截斷

下列範例利用兩個 SELECT 陳述式,來示範捨入和截斷之間的差異。 第一個陳述式會捨入結果。 第二個陳述式會截斷結果。

SELECT ROUND(150.75, 0);  
GO  
SELECT ROUND(150.75, 0, 1);  
GO  

結果集如下所示。

--------  
151.00  
  
(1 row(s) affected)  
  
--------  
150.00  
  
(1 row(s) affected)  

另請參閱

CEILING (Transact-SQL)
資料類型 (Transact-SQL)
運算式 (Transact-SQL)
FLOOR (Transact-SQL)
數學函數 (Transact-SQL)