奇怪'数据截断:超出范围值'十进制列的错误

时间:2016-06-19 19:12:01

标签: mysql

我在mysql表中有一个foo列,其类型为DECIMAL (10,10)

如果我尝试在其中插入一条值foo为100.0的记录,则会产生错误'数据截断:列' foo'超出范围值在第1行

我做错了什么 - 不是10,10意味着小数点前后都有10位数字,这应该允许这个数字?

2 个答案:

答案 0 :(得分:1)

不,第一个值表示总位数,第二个值表示逗号后的数字

所以,

20,10 = 20 Digits and 10 after comma => 10, before and ten after

打包"确切"定点数。 M是总位数(精度),D是小数点后的位数(刻度)。小数点和(对于负数)" - "符号不计入M.如果D为0,则值没有小数点或小数部分,在INSERT上,该值将四舍五入到最接近的DECIMAL。 DECIMAL的最大位数(M)为65.支持的最大小数(D)为30.如果省略D,则默认值为0.如果省略M,则默认值为10.

答案 1 :(得分:0)

如果你想要10位数和10位小数

DECIMAL (20,10)

第一个值定义总数字数...第二个数字定义小数点后的最大数字