在mariadb或其他人中,数值类型列中的十进制值不包括在计算中。例如,
MariaDB [mydb]> create table test (a decimal(5,0),b double(5,0));
MariaDB [mydb]> insert into test values (1.5,1.5);
MariaDB [mydb]> insert into test values (1.5,1.5);
MariaDB [mydb]> select format(sum(a),3) from test;
+------------------+
| format(sum(a),3) |
+------------------+
| 4.000 |
+------------------+
MariaDB [mydb]> select sum(b) from test;
+--------+
| sum(b) |
+--------+
| 2 |
+--------+
为什么他们不回来" 3"我想要的是? 为什么他们的回报不同?
答案 0 :(得分:0)
(m,0)
说存储 0
小数位。那么,1.5
被向上舍入(或向下?)到2
(或1
?)。
SUM()
函数适用于存储的内容,并且对原始1.5
一无所知。
DECIMAL(5.0)
表示只保留小数点左边5位数字,右边没有数字。
DOUBLE(5.0)
说更糟糕的事情;不要使用它。使用普通DOUBLE
。