【问题标题】:What is the correct default value for a MySQL decimal field?MySQL 十进制字段的正确默认值是多少?
【发布时间】:2018-11-19 17:47:30
【问题描述】:

我的 MySQL 数据库中有一个 decimal 字段。我已将其定义为: decimal(1,1) UNSIGNED NULL。但我想为它设置一个默认值,比如7.0,这就是我遇到的问题。每当我想设置这个值时,我都会收到这个错误:

Invalid default value ...

我也尝试将其设置为7,07,但它导致了同样的错误。 MySQL 十进制字段的正确默认值是什么?

注意:我使用的是 Navicat for MySQL

【问题讨论】:

  • 在 DECIMAL 列声明中,可以(并且通常是)指定精度和小数位;...精度表示为值存储的有效位数,小数位表示数字小数点后可以存储的位数。 - dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html,换句话说,1,1 是精度 1 比例 1,对于 0.7 来说足够大,但对于 7.0 来说不够(需要 2,1)
  • 知道了。我必须将其声明为 DECIMAL(2,1) 才能将 7.0 作为它的默认值。谢谢你的评论。之前写过,但是没注意里面提供的例子。
  • 让我们看看给你带来麻烦的语句。

标签: mysql decimal default-value


【解决方案1】:

在 MySQL 中,声明 DECIMAL(P,S) 时:

精度 (P) 表示为值存储的有效位数,小数位数 (S) 表示小数点后可存储的位数。

因此,在您的示例中,DECIMAL(1,1) 表示最多 1 位数字,并且在点之后最多 1 位数字......这真的没有意义。

为了更好地理解,这里有更多示例:

  • DECIMAL(5,2):5 位,其中两位用于小数部分。因此,可能的值范围从 -999.99 到 999.99
  • DECIMAL(5,0):不允许有小数部分,所以它相当于一个最多5位的整数。

UNSIGNED 的行为是相同的,但使用减号会引发错误。

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 2012-01-23
    • 2017-10-21
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 2015-11-01
    相关资源
    最近更新 更多