在MySQL中,将货币值存储为 decimal(22,2)
是否可以?我正在为虚拟世界编写一个基于web的市场和广告网络。
在MySQL中,将货币值存储为 decimal(22,2)
是否可以?我正在为虚拟世界编写一个基于web的市场和广告网络。
如果有人拥有一亿亿美元怎么办?!?一个字段装不下这个巨额的钞票...
严肃地讲,SQL Server和PostgreSQL有货币数据类型,Access有货币数据类型,而Oracle和MySQL没有。
然而,这篇帖子 - 在MySQL数据库中存储货币值的最佳数据类型
出于某种原因建议使用4位有效数字,我想是为了存储分数美分(股票份额等)。
如果没有用户会有超过一亿亿美元(严肃地说),并且您不需要计算存储的美分部分,则您的格式应该非常好。
如果您需要在数据库中存储货币,可以使用int类型,但将其存储为最小值(美元的分),然后在需要时只需除以100即可。这样做会提高效率。
这个页面上@Orbit的被接受的答案提到了SQL Server有一个money
数据类型。
然而,根据这个答案(在SQL Server中应该选择MONEY还是DECIMAL(x,y)数据类型?),在SQL Server中存储货币值的更好选择是decimal(19,4)
- 这也适用于MySQL。
据我所知,在使用SQL Server
中的money
类型进行计算时,应当小心浮点舍入误差。而且它可能会间接地使用decimal(19,4)
类型。
因此...decimal(22,2)
类型可以很好地存储货币值...但正如许多人建议的那样,decimal(19,4)
会更好。