說明
問題原因:mysql formt函式會對數字進行每3位加一個逗號
例如:一個數 10000000 使用format函式格式化后會變成 10,000,000
問題描述:當某個表有一個金額列 money 型別為 decimal(12,5) , 此時頁面上需要展示3位小數,合計列也是如此,這是 用 format(money,3) 格式化每一列都正常, 但是統計總計的時候就出問題了 ,sum(format 過的金額列) 算出的金額(在某一列金額超過3位數的時候format 會給其添加逗號,會出現問題 就會很離譜)
舉例說明
例子
- 現有一個表test,有id,name,money 三列,測驗資料如下
id name money 1 蘋果 5.00000 2 小米手機 1999.99000 3 李子 3.00000 - money 列保留3位小數的同時,并計算money的總值
- 先格式化每列的3位小數
代碼如下
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
- 先格式化每列的3位小數
說明
通過上述例子,說明 format 函式最好只在進行合計列計算后展示的時候格式化使用,不然會出現很大的問題,直接將精度算沒了
解決辦法
一般數字的轉換和格式化,還是建議使用如下方法,不會對數字進行加逗號處理
convert(列名, 資料型別如:decimal(12,2))
cast(列名 as 資料型別如:decimal(12,2))
ROUND(列名或值,精度)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/253940.html
標籤:其他
