Mysql 在varchar输入上向下舍入
我做了一些SQL计算,发现了一个非常奇怪的行为。 当我对两个字段的结果进行取整时,它是向下取整,而不是向上取整 我检查了数据类型。。一个是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
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))代码>