SQL查詢四捨五入 解決方法

方法1:

SELECT CAST('123.456' as decimal) 將會得到 123(小數點後面的將會被省略掉)。
如果希望得到小數點後面的兩位。
則需要把上面的改爲
SELECT CAST('123.456' as decimal(38, 2)) ===>123.46

說明1:

這裏的decimal英文爲: 小數, 十進制
decimal(38,2)
這裏的38是這個小數的位數有多少位, 一般最大不超過38位, 所以寫38是不會出錯的!
如果:
SELECT CAST('123.456' as decimal(2, 2))
就會出錯, 爲什麼呢, 因爲這個123.456小數點後是3位值, 所以這個38這個位置最少是3!

說明2:
decimal後面的參數中的2是小數點後取幾位, 是2就取兩位, 是3就取三位! 並且是四捨五入後的結果!

說明3:
cast應該就是轉換數值的意思了


自動四捨五入了!

方法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

----------------------------------------------------------------------------日期之差---------------------------

case   when   DateDiff(dd,借書日期,getdate())>30     then   DateDiff(dd,借書日期,getdate())*[單價]*1.012   else   0   end  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章