問題緣由:mysql formt函數會對數字進行每3位加一個逗號
例如:一個數 10000000
使用format函數格式化後會變成 10,000,000
問題描述:當某個表有一個金額列 money 類型爲 decimal(12,5) , 此時頁面上須要展現3位小數,合計列也是如此,這是 用 format(money,3) 格式化每一列都正常, 可是統計總計的時候就出問題了 ,sum(format 過的金額列) 算出的金額(在某一列金額超過3位數的時候format 會給其添加逗號,會出現問題 就會很離譜)mysql
id | name | money |
1 | 蘋果 | 5.00000 |
2 | 小米手機 | 1999.99000 |
3 | 李子 | 3.00000 |
SELECT id,NAME,FORMAT(money,3) money FROM test
id | name | money |
1 | 蘋果 | 5.000 |
2 | 小米手機 | 1,999.990 |
3 | 李子 | 3.000 |
SELECT SUM(money) FROM (SELECT id,NAME,FORMAT(money,3) money FROM test ) t
sum(money) |
9 |
經過上述例子,說明 format 函數最好只在進行合計列計算後展現的時候格式化使用,否則會出現很大的問題,直接將精度算沒了sql
通常數字的轉換和格式化,仍是建議使用以下方法,不會對數字進行加逗號處理
convert(列名, 數據類型如:decimal(12,2))
cast(列名 as 數據類型如:decimal(12,2))
ROUND(列名或值,精度)
函數