Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 在varchar输入上向下舍入_Mysql_Rounding_Varchar - Fatal编程技术网

Mysql 在varchar输入上向下舍入

Mysql 在varchar输入上向下舍入,mysql,rounding,varchar,Mysql,Rounding,Varchar,我做了一些SQL计算,发现了一个非常奇怪的行为。 当我对两个字段的结果进行取整时,它是向下取整,而不是向上取整 我检查了数据类型。。一个是double,另一个是varchar(不要问)。 尽管这种行为很奇怪,但我找不到合乎逻辑的理由: select ROUND(3.17 * 450 , 2); /* = 1426.50 */ select ROUND(3.17 * '450', 2); /* = 1426.50 */ select ROUND(3.17 * 450 ); /* = 1427

我做了一些SQL计算,发现了一个非常奇怪的行为。 当我对两个字段的结果进行取整时,它是向下取整,而不是向上取整

我检查了数据类型。。一个是
double
,另一个是
varchar
(不要问)。
尽管这种行为很奇怪,但我找不到合乎逻辑的理由:

select ROUND(3.17 *  450 , 2); /* = 1426.50 */
select ROUND(3.17 * '450', 2); /* = 1426.50 */

select ROUND(3.17 *  450 ); /* = 1427 */
select ROUND(3.17 * '450'); /* = 1426 !? */
参数的顺序不起作用。

知道问题出在哪里吗?

这可能与上一个示例类似。
选择ROUND(2.5),ROUND(25E-1)查询返回不同的结果。无论您使用什么方法,我都不会依赖隐式转换。尝试:
选择四舍五入(3.17*CAST('450'为十进制(10,4))