Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL的第一个参数是什么';什么是十进制函数?_Mysql_Decimal - Fatal编程技术网

MySQL的第一个参数是什么';什么是十进制函数?

MySQL的第一个参数是什么';什么是十进制函数?,mysql,decimal,Mysql,Decimal,使用MySQL 5.0.27 此查询: 选择CAST('543.21'作为小数点(100,2)) 返回543.21 这一条也是: 选择CAST('543.21'作为小数点(2,2)) 事实上,我很难弄清楚参数有什么影响。我用它来聚合varchar列中的数值(出于传统原因!!),并四舍五入到小数点后2位 我应该选择一个高数字吗?它描述了一个字段(或变量)能够存储的总位数。 小数点(100,2)-100个总位数,小数点分隔符前98位,后2位 小数(2,2)2个总位数,小数点分隔符前0,后2 解释如下

使用MySQL 5.0.27

此查询: 选择CAST('543.21'作为小数点(100,2))

返回543.21

这一条也是: 选择CAST('543.21'作为小数点(2,2))

事实上,我很难弄清楚参数有什么影响。我用它来聚合varchar列中的数值(出于传统原因!!),并四舍五入到小数点后2位


我应该选择一个高数字吗?

它描述了一个字段(或变量)能够存储的总位数。 小数点(100,2)-100个总位数,小数点分隔符前98位,后2位 小数(2,2)2个总位数,小数点分隔符前0,后2

解释如下:

[补充]


对于舍入,只需使用ROUND()函数。

那么为什么不选择CAST('543.21'作为十进制(2,2))返回
.21
?它确实为我返回0.99。您有哪个MySQL版本?在5.0和5.1之间,这方面似乎有一些变化,您可能认为它应该像SQL Server一样抛出一个错误(算术溢出)。(仅限我的$0.02。)@Cory Larson:根据SQL模式设置,它可能实际执行(未测试)。谢谢,这非常有用。事实上,我试图同时使用cast(val作为DECIMAL)有效地进行强制转换和舍入,但是round()函数似乎进行了隐式类型转换。你确定吗?我刚刚运行了第二个查询,它返回.99。你正在运行哪个版本的MySQL?这是一个相当令人惊讶的结果!使用5.0.27,但无论如何现在解决了,谢谢。