MySQL:十进制数据类型的大小

时间:2013-10-05 18:31:28

标签: php mysql

我有一些来自需要存储在我的数据库中的服务器的值。我不是MySQL专家,但我对基本输入/输出的理解非常好。现在我正在尝试确定存储以下小数时我应该使用的长度。

tax_rate [DECIMAL ?,?]: value(0.014840000000)
units [DECIMAL ?,?]: value(1.00)
initial_charge [DECIMAL ?,?]: value(2.5110)
charge [DECIMAL ?,?]: value(2.8967)
link_tax [DECIMAL ?,?]: value(0.385652)
exempt [DECIMAL ?,?]: value(0.0000)
tax [DECIMAL ?,?]: value(0.042986)
base_price [DECIMAL ?,?]: value(41.8500)

我希望有人可以建议我需要使用这些值的正确尺寸AS WELL解释他们为什么选择这些值。或者链接到一篇深入解释MySQL小数的文章。

任何帮助都将不胜感激。

谢谢!

-------的修改 --------

阅读MySQL文档后,确定十进制类型的大小有一个非常好的解释。这些是我为我的用例设置的大小:

tax_rate [DECIMAL 15,12]: value(0.014840000000) ? max(999.999999999999)
units [DECIMAL 6,2]: value(1.00) ? max(9999.99)
initial_charge [DECIMAL 9,4]: value(2.5110) ? max(99999.9999)
charge [DECIMAL 9,4]: value(2.8967) ? max(99999.9999)
link_tax [DECIMAL 9,6]: value(0.385652) ? max(999.999999)
exempt [DECIMAL 9,4]: value(0.0000) ? max(9999.9999)
tax [DECIMAL 10,6]: value(0.042986) ? max(999999.999999)
base_price [DECIMAL 10,4]: value(41.8500) ? max(999999.9999)

2 个答案:

答案 0 :(得分:30)

来自MySQL

  

DECIMAL列的声明语法是DECIMAL(M,D)。该   MySQL 5.1中参数的值范围如下:

     

M是最大位数(精度)。它的范围是1   (较早版本的MySQL允许范围为1到254.)

     

D是小数点右边的位数(   规模)。它的范围为0到30,且不得大于M.

考虑这个数字:123456789.12345此处M14D5则根据此原则,您可以为每列设置DECIMALS(M,D)在他们预期的最​​大值。

答案 1 :(得分:0)

由于接受的答案使我很想念,因此我在包含多个定义为item的列的表上运行SHOW CREATE TABLE(请注意,缺少 M D

结果如下。

DECIMAL DEFAULT NULL

前述使得M和D的默认值不言而喻; M = 10 ,而 D = 0 。不用说,这几乎肯定不是期望的结果。

您应始终指定您的M和D值。