引入:
本人菜鳥,今天遇到一個問題,把數據庫中的一列值保留兩位小數查出來;
在網上搜索了很多關於數據庫中保留兩位小數的文章,可惜總是不能實現,后來自己總結了下,
才發現原來很簡單,是自己沒有理解夠;
在這之前先介紹下幾個函數:
1:round()這是四舍五入函數,用於把數值字段舍入為指定的小數位數。
例如: SELECT round(column_name,decimals) FROM table_name;
網上說這個函數可以保留 四舍五入兩位小數,可是我發現SELECT ROUND(19.434,2)出來的是19.430而不是19.43,
可能是由於不能數據庫的關系,竟然講到這個函數,我就對這個函數解釋下總結了下網上一些博客對它的了解
round 有兩個重載,一個是兩個參數,一個是三個參數:
1.帶有兩個參數.每二個參數是小數點的左邊第幾位或右邊第幾位,分別用正負表示.左邊為負,右邊為負.為四舍五入.
SELECT round(567.45676,-1) 570.00000(-1 表示四舍五入到右邊第1位,其中,個位為第0位,四舍五入后舍棄的部分顯示為0)
SELECT round(567.45676,2) 567.46000
SELECT round(20,-3) 0
2.帶三個參數.第二個參數同上.第三個參數有兩種可能,一種是取0為四舍五入.另一種是正負值,則為舍去
SELECT round(567.45676,2,0) 567.46000(跟兩個參數意義的結果,可以把兩個參數的當為三位參數的特例為第三參數0)
SELECT round(567.45676,2,3) 567.45000(第三個參數不為0,所以為舍去,舍棄兩位以后的數字,變為567.45舍棄部位為0所以是567.45000)
SELECT round(567.45676,2,3) 567.45000
2: cast(value as type)函數,其實要保留兩位小數,只需要把用SELECT CAST(19.4667 AS decimal(9,2))就可以這樣出來是19.47要是不想四舍五入的話,
可以 先用round函數處理下SELECT cast(round(19.4667,2,3) as decimal(9,2)) 19.46當round函數第三個參數不為0就可以;
3:convert(type,value)函數擁有和cast一樣的功能SELECT convert( decimal(9,2),round(19.4667,2,3) ) 19.46