[英]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.