我想在MySQL数据库中存储许多记录。它们都包含货币价值。但我不知道每个数字要插入多少位。 为此,我必须使用哪种数据类型? VARCHAR或INT(或其他数值数据类型)?


当前回答

试着用

Decimal(19,4)

这通常适用于所有其他DB以及

其他回答

这取决于你的需要。

使用DECIMAL(10,2)通常就足够了,但如果你需要更精确的值,你可以设置DECIMAL(10,4)。

如果使用大值,则将10替换为19。

我更喜欢使用BIGINT,并通过与100相乘来存储值,这样它将成为整数。

例如,要表示93.49的货币值,该值应存储为9349,而显示的值可以除以100并显示。这将占用更少的存储空间。

警告: 大多数情况下,我们不执行货币*货币乘法,以防万一,如果我们正在执行,然后将结果除以100并存储,以便返回适当的精度。

乘以10000并存储为BIGINT,就像Visual Basic和Office中的“货币”一样。参见https://msdn.microsoft.com/en-us/library/office/gg264338.aspx

如果要求符合GAAP,或者需要小数点后4位:

小数(13、4) 支持最大值为:

The $999999999999

否则,如果小数点后2位足够: 小数(13日2)

src: https://rietta.com/blog/best-data-types-for-currencymoney-in/

你可以使用DECIMAL或NUMERIC,两者都是一样的

DECIMAL和NUMERIC类型存储精确的数值数据值。当需要保持精确的精确度时,例如货币数据,就会使用这些类型。在MySQL中,NUMERIC被实现为DECIMAL,因此下面关于DECIMAL的说明同样适用于NUMERIC。: MySQL

例如十进制(10,2)

良好的阅读