sqlserver四捨五入應用round函數及cast和convert函數。本站提示廣大學習愛好者:(sqlserver四捨五入應用round函數及cast和convert函數)文章只能為提供參考,不一定能成為您想要的結果。以下是sqlserver四捨五入應用round函數及cast和convert函數正文
引言
明天和測試溝通一個百分比盤算方法時碰到一個成績, 我在存儲進程裡用到了強轉CAST(32.678 AS DECIMAL(5,1)) 我以為該方法只會保存一名小數,我給測試的答復是我並沒有效到四捨五入函數,數據也沒有四捨五入,而測試說他們本身驗證後覺的數據是經由四捨五入了的。 想到這裡因而我再試了試存儲進程的每一個盤算點,才發明了這個成績。
ROUND
那末用到四捨五入而且保存小數點時我們確定會首選ROUND函數, 假如字段的數據類型是decimal(18,10)時那末四捨五入後還會有許多0湧現。
CAST和CONVERT
其實我應用強轉時並沒有盤算四捨五入成果,只是純真為了獲得相符我請求的數據,明天才發明這兩個強轉也會四捨五入成果,也就是說上面三個語句將會前往雷同的成果值
select ROUND(32.678,1) --32.700 select CAST(32.678 as DECIMAL(5,1)) --32.7 select convert(NUMERIC(5,1),32.678) --32.7
上面抽個空給年夜家引見SQL的四捨五入ROUND函數
SQL四捨五入2007/11/01 16:35成績1:
SELECT CAST('123.456' as decimal)
將會獲得 123(小數點前面的將會被省略失落)。
假如願望獲得小數點前面的兩位。
則須要把下面的改成
SELECT CAST('123.456' as decimal(38, 2)) ===>123.46
主動四捨五入了!
成績2:
SELECT ROUND(123.75633, 2, 1), ROUND(123.75633, 2)
下面的SQL獲得的2個值是紛歧樣的,前一個是:123.75000,後一個是:123.76000。
由於前者在停止四捨五入之前,小數點後曾經被截取,保存了2位。
爾後者則沒有被截取,四捨五入時天然就會獲得123.76000
ROUND
前往數字表達式並四捨五入為指定的長度或精度。
語法
ROUND ( numeric_e-xpression , length [ , function ] )
參數
numeric_e-xpression
准確數字或近似數字數據類型種別的表達式(bit 數據類型除外)。
length
是 numeric_e-xpression 將要四捨五入的精度。length 必需是 tinyint、smallint 或int。當 length 為負數時,numeric_e-xpression 四捨五入為 length 所指定的小數位數。當 length 為正數時,numeric_e-xpression 則按 length 所指定的在小數點的右邊四捨五入。
function
是要履行的操作類型。function 必需是 tinyint、smallint 或 int。假如省略 function 或 function 的值為 0(默許),numeric_e-xpression 將四捨五入。當指定 0 之外的值時,將截斷 numeric_e-xpression。
前往類型
前往與 numeric_e-xpression 雷同的類型。
正文
ROUND 一直前往一個值。假如 length 是正數且年夜於小數點前的數字個數,ROUND 將前往 0。
示例 成果
ROUND(748.58, -4) 0
當 length 是正數時,不管甚麼數據類型,ROUND 都將前往一個四捨五入的 numeric_e-xpression。
示例 成果
ROUND(748.58, -1) 750.00
ROUND(748.58, -2) 700.00
ROUND(748.58, -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)
123.4500
Select ROUND(123.45, -2)
100.00
C. 應用 ROUND 截斷
下例應用兩個 Select 語句解釋四捨五入和截斷之間的差別。第一個語句四捨五入成果。第二個語句截斷成果。
語句 成果
Select ROUND(150.75, 0) 151.00 Select ROUND(150.75, 0, 1) 150.00