1

美好的一天,我对MySQL.

decimal显然使用它是业务应用程序中准确性的最安全选择。但是,我发现当返回字段时,我的值是999999999.99,其中我的数据类型是 DECIMAL(10,2)。所以实际值已经溢出到(10, 2)参数之外。

即使我在逗号前指定了 10 个位置,在逗号后指定了 2 个位置,这是否正确。MySQL仍然存储完整的数字吗?

是否可以关闭逗号前后显示的最大位数?

4

1 回答 1

1

即使我在逗号前指定了 10 个位置,在逗号后指定了 2 个位置,这是否正确。MySQL仍然存储完整的数字吗?

不,它不会。

首先,您总共指定了 10 位数字;两个在小数点右边,八个在左边。

标准 SQL 要求 DECIMAL(5,2) 能够存储具有五位和两位小数的任何值,因此可以存储在薪水列中的值范围为 -999.99 到 999.99。

其次,如果有两个以上,MySQL 将默默地将最低有效数字转换为比例。这可能看起来像 MySQL 截断,但实际行为取决于平台。如果您提供太多最重要的数字,它将引发错误。

最后,当您使用数据库时,显示的位数与数据类型或存储的值范围无关。

于 2013-04-20T13:48:06.987 回答