2011-05-04 45 views
2

如果數字不是整數,並且沒有任何數字是整數,我試圖獲得一個格式化爲2位小數的數字。目前我使用下面的查詢如何獲得小數,如果數字不是在mysql中輪迴

SELECT round(SUM(number),2) as Numb FROM table 

我得到這樣的數字1.00,我想它是1

+0

我見過這樣的昨天的問題,這讓我感到這些問題考慮不周 - 他們詢問如何做一些事情,在大多數情況下,你不應該這樣做。如果一個數字被存儲爲帶有小數分量的數字類型,那麼它的存儲方式可能是因爲對測量精度存在隱含的限制。顯示適當的小數位保留了該值的準確性的信號。最重要的是,如果您將此過程的輸出與產生整數的查詢進行比較,而不是這種查詢的結果,則會看起來很醜並且不一致。 – Hammerite 2011-05-04 16:24:38

+1

@Hammerite我不同意。我正在研究這個,我的使用案例是採購系統中的「金額」欄。我想要例如能夠購買5件東西,或2.4米的東西。購買商品時,小數點是完全不必要的。 – 2012-10-17 14:11:50

回答

2

你將不得不使用與模量的情況。喜歡的東西:

select 
case (number mod 1 > 0) 
    when true then round(number, 2) 
    else round(number, 0) 
end 
from Numb 

結果:

select 
case (number mod 1 > 0) 
    when true then round(number, 2) 
    else round(number,0) 
end as num 
from Numb; 

+------+ 
| num | 
+------+ 
| 2 | 
| 1.01 | 
| 5 | 
| 3.01 | 
| 4.25 | 
+------+ 
5 rows in set (0.00 sec) 
+0

只有選擇返回只有一行 – 2011-05-04 16:34:44

+0

如何如此?上面的查詢選擇Numb中的所有行。我做了一個小測試和多行結果 – sreimer 2011-05-04 17:24:58

+0

這是我正在使用的查詢'SELECT case(SUM(WorkedHours)mod 1> 0)when true then round(SUM(WorkedHours),2)else round(SUM(WorkedHours) ,0)end AS TotalWorkedHours FROM timetrack.work_items w INNER JOIN timetrack.time_logs t on w.ID = t.IDWorkItem group by IDSottocommessa'and I get [TotalWorkedHours,46.19,10.00,30.00,25.00,12.00] – 2011-05-05 07:07:09

相關問題