mysql decimal

mysql decimal

本篇讨论mysql decimal数据类型特征

分别从以下3个方面进行介绍:

1、最大位数

2、存储格式

3、存储要求

参考值:decimal(M, D)

1、最大位数

(1)M是最多的位数,范围从1到65;

(2)D是小数点右边的位数,范围从0到30,且不得大于M。

如:decimal(6,2)表示存储的最大位数为6位(小数点左边+右边),小数点右边最大存储2位,最大表示的值为9999.99。

如插入9999.999则报错:[Err] 1264 - Out of range value for column 'money' at row 1

2、存储格式

decimal列使用二进制格式进行存储,该格式将9个十进制的数字打包为4个字节,每个值的整数和小数部分的存储要求分别确定。9个数字的整数倍每个都需要4个字节,剩余的要需打包:

剩下的数字

字节数

0

0

1-2

1

3-4

2

5-6

3

7-9

4

如:(1)decimal(18, 9)小数点两边都有9位数,因此两边都需要4个字节

(2)decimal(20, 6)小数点左边需要4个字节+3个字节,右边需要3个字节

3、存储要求

decimal不存储前导+或-,或前导0

如:(1)插入+0001.1到decimal(4, 1)中,则将其存储为1.1

(2)对于负数,不存储文字字符,如decimal(6, 2)可存储-9999.99到9999.99

(3)decimal(2, 0)可存储-99到99

 

参考:

https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值