【MYSQL】金额(金钱)相关的数据存储类型
【摘要】
int
对于游戏币等代币,一般存储为int类型是可行的。
问题在于越界,int类型长度为11位。
在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,...
int
对于游戏币等代币,一般存储为int类型是可行的。
问题在于越界,int类型长度为11位。
在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。
Decimal
Decimal为专门为财务相关问题设计的数据类型。
DECIMAL从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:
·M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认 值是10。
·D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5,2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。
能够解决数据的范围和精度的问题。
总结
这两种方式都是可行的解决方案,我们可以根据具体情况使用合适的方案。
参考资料
- http://www.linuxidc.com/Linux/2013-07/88032.htm
- http://baike.baidu.com/link?url=_JyEhjEYAYW2TOzncRKUMCBlEH77UjO6hEIAwIGCDMBQSon-JsUmoxkSRRVnnbEf40aoqWerVdqsWN97MVgLGq
文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。
原文链接:coderfix.blog.csdn.net/article/details/59112561
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)