2010-07-29 63 views
3

使用MySQL 5.0.27MySQL的Decimal函數的第一個參數是做什麼的?

這個查詢:SELECT CAST( '543.21' 爲十進制(100,2))

收益543.21

那麼,這一個: SELECT CAST('543.21 'AS DECIMAL(2,2))

事實上,我很難弄清楚這個參數有什麼作用。我正在使用它在varchar列中聚合數值(出於傳統原因!!)並舍入到2個小數位。

我應該選擇一個高數字嗎?

+0

你確定嗎?我剛剛運行第二個查詢,它返回.99。你運行的是哪個版本的MySQL? – 2010-07-29 15:19:07

+0

'使用MySQL 5.0.27' – Mchl 2010-07-29 15:26:09

+0

這是一個相當令人驚訝的結果!使用5.0.27,但無論如何解決了,謝謝。 – Lars 2010-07-29 15:28:12

回答

5

它描述了一個字段(或變量)能夠存儲多少個總位數。 DECIMAL(100,2) - 100個總位數,98之前,2後小數分隔 DECIMAL(2,2)2個總位數,0之前,2小數分隔後

這裏解釋: http://dev.mysql.com/doc/refman/5.1/en/numeric-types.html

[新增]

四捨五入只是使用ROUND()函數。

+0

那麼爲什麼'SELECT CAST('543.21'AS DECIMAL(2,2))'return'.21'? – 2010-07-29 15:13:45

+0

它確實爲我返回0.99。你有哪些MySQL版本? 看來這個區域在5.0和5.1之間有一些變化 http://dev.mysql.com/doc/refman/5.1/en/precision-math-decimal-changes.html – Mchl 2010-07-29 15:16:28

+0

你會認爲它應該拋出像SQL Server這樣的錯誤(算術溢出)。 (只需0.02美元。) – 2010-07-29 15:18:44

相關問題