2010-07-29 128 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

相关问题