Mysql中的十进制

Mysql中的十进制,mysql,decimal,Mysql,Decimal,我有一个有很多列的表。它们之间有AB和AL,都是小数点14,3。 现在我必须创建一个新表,如下所示: create table new as select AB, AL, (AB/AL)*100 AS M from my_table; Mysql给了我一些警告,比如:第2行M列的1265数据被截断 是不是在警告我新的数字将被四舍五入?安全吗 现在新的M列是一个小数点24,7,但我只需要一个四舍五入的小数点14,3。 我必须做一个ALTERTABLE吗,或者在create语句中有一种方法可以做到

我有一个有很多列的表。它们之间有AB和AL,都是小数点14,3。 现在我必须创建一个新表,如下所示:

create table new as
select AB, AL, (AB/AL)*100 AS M from my_table;
Mysql给了我一些警告,比如:第2行M列的1265数据被截断

是不是在警告我新的数字将被四舍五入?安全吗

现在新的M列是一个小数点24,7,但我只需要一个四舍五入的小数点14,3。 我必须做一个ALTERTABLE吗,或者在create语句中有一种方法可以做到这一点

我有一个巨大的数据库,有很多这样的列,所以我需要将表的大小保持在最小值 示例1.0/0.3对于小数点14,3都可以,但它们的结果与公式一起应用时会产生333.333

可能会有舍入误差,但只有很小的误差,如果您只需要14,3,只需使用14,3,因为将24,7转换为14,3与仅制作14,3是相同的


您的数据将被截断,但可能不足以影响您,请先试用以确保安全

我有一个包含许多列的表。这有时表明设计不佳,即非规范化设计。如果我有AB,AL as BIGINT mysql,则生成一个小数26,4并警告我截断。我怎样才能决定在creation语句中使用小数点20,6还是小数点14,3你最终会以14,3结尾?如果是这样的话,就用这个。这是你的选择。我不知道你的数据是用来做什么的,也不知道它需要有多准确。这两种方法都会有一些损失20,6是少损失vs多存储对不起,我没有解释好我的问题。Mysql如果我有AB,AL作为BIGINT Mysql生成一个小数26,4。假设我想要一个小数20,6,然后我做了一个alter表:我将在4位之后有所有的零,因为Mysql刚刚截断了这个数字。我怎样才能在create语句中写出AB/AL*100必须是小数20,6?CASTAB/AL*100必须是小数20,6