【备忘】关于MySQL的decimal数据类型的卧槽理解

decimal释义:

用一张图来解释一下这个字段的意思:

 那么,在表中某个字段设计为decimal数据类型,就表示存储带小数的数据,而且是十进制格式存储精确数值。

使用场景:

一般用来存储货币数据。

技巧:

因为decimal数据类型中,不同的数值位数用到的存储空间不一样,参考下方表格:

剩余数字
0 0
1–2 1
3–4 2
5–6 3
7-9 4

所以,根据你的存储需求选择对应长度来存储才不会浪费空间。

实战举例:

我做了一个代理系统,有一个收益字段,它是货币,所以我选择了decimal,那么整数位和小数位怎么安排呢?我是这么做的。

我总共选用了13位,小数位占了4位,整数位占了9位,依据上方表格,那么我的空间占用最大是:4字节+2字节=6个字节。

实战参考:

 

整数位存9位完全够了,因为不清楚这个收益会不会突然变大而导致存不下而报错,从而导致业务问题,所以我留了几位的空间。(小故事:因为前几天踩过这个坑,原来整数位存的5位,查日志的时候发现报错了,原因是传了一个6位的数字过来,这个问题花了一天时间来补数据,简直可可怕怕!)

小经验:

 1、说一个小经验,如果小数位存储4位,那么修改数据的时候传入的5位,那么第五位数字在存储的时候遵循四舍五入规则(已测试,小数位最多保存4位)。

2、如果数值在其取值范围之外,则直接报Out of range value错误。

END

Guess you like

Origin blog.csdn.net/qq_15941409/article/details/121028822