浅议MySQL数值范围问题

来源:互联网 发布:路由器怎么设置网络快 编辑:程序博客网 时间:2024/06/03 15:06

      最近写的一段代码涉及到表的插入的操作,对所插入的数值型数据没做范围验证,结果呢没能通过测试,反馈的错误是:Out of range value for column 'xxx' at row x。了解了下MySQL中DECIMAL(M, D)表示的数据范围,大致如下:

DECIMAL(M,D)所能表示的数据精度范围:

M是数字所能表示的位数(包括小数部分),范围是1至65;

D是小数点后所占位数,范围是0至30,同时不能超过M。

      若表中某字段精度为DECIMAL(12,2),表示该字段能存储的数字的整数部分最大位数是10位,小数部分最大位数是2,这里有几个问题需要注意:

1、即使插入的数据没有小数部分,存入表中后也会带上两位小数(全部是0),所以不要以为插入的数字不显式地带小数位就能让整数部分占12位的数字成功保存进去,这种情况下回报错:Out of range value for column 'xxx' at row x。

2、这种形式所表示的范围当然也包括的负数,能保存的最小负数与能保存的最大正数在绝对值上是相等的。

3、即使要插入的数字小数部分超过了两位,MySQL也会只取两位。

      需要说明的是以上是在MySQL5.7版本上验证的。
0 0
原创粉丝点击