数字列忽略mariadb中的小数值?

时间:2016-06-05 11:25:15

标签: sum mariadb numeric

在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"我想要的是? 为什么他们的回报不同?

1 个答案:

答案 0 :(得分:0)

(m,0)存储 0小数位。那么,1.5被向上舍入(或向下?)到2(或1?)。

SUM()函数适用于存储的内容,并且对原始1.5一无所知。

DECIMAL(5.0)表示只保留小数点左边5位数字,右边没有数字。

DOUBLE(5.0)说更糟糕的事情;不要使用它。使用普通DOUBLE