簡體   English   中英

SQL Server round()

[英]SQL Server round()

我想舍入一個選擇的值

例如:

select width from Home

width的結果為“ 3.999999999999999”

我想成為“ 3.99”或“ 3.9”

ROUND(width, 1 or 2, 1)應該最適合您。 例:

SELECT CONVERT(NUMERIC(13,2), ROUND(width, 2, 1))
FROM Home

將返回3.99,並且

SELECT CONVERT(NUMERIC(13,1), ROUND(width, 1, 1))
FROM Home

將返回3.9

如果您想要一個3.99或3.9的值,那么您就不需要round() 您需要floor() 但是,這適用於整數,但不適用於小數。

cast(width as decimal(10,2))的幼稚方法將返回4.00 ,以及round(width, 2) 一種方法是減去少量。 所以:

select cast(width - 0.005 as decimal(10, 2))

應該給你“ 3.99”。

如果只需要兩個十進制值,則可以乘以100,將結果取底並除以100(這是必須的,因為floor僅將數字取底為整數):

select floor(width * 100) / 100 from Home  

步驟如下

3.99999999 * 100 = 399.999999    --- Multiply by 100
floor(399.999999) = 399          --- floor 
399 / 100 = 3.99                 --- Divide by 100

也可以使用帶有第三參數舍入函數的不同形式。

當第三個參數不同於0時,結果將被截斷而不是四舍五入

句法

ROUND ( numeric_expression , length [ ,function ] )

爭論

numeric_expression是精確數字或近似數字數據類型類別的表達式,位數據類型除外。

length是numeric_expression要舍入的精度。 length必須是tinyint,smallint或int類型的表達式。 當length為正數時,numeric_expression將舍入為length指定的小數位數。 當length為負數時,numeric_expression在小數點的左側舍入,由length指定。

function是要執行的操作的類型。 函數必須是tinyint,smallint或int。 如果省略函數或值為0(默認值),則將數字表達式四舍五入。 當指定非0的值時,numeric_expression 被截斷。

這是使用此版本的round的選擇:

 select round(width, 2, 1) from Home 

這很簡單,如果您想要結果3.9,則

select round(width,1) from Home

如果需要結果3.99,請使用。

select round(width,2) from Home

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM