我有一个像十进制(2,1)这样的列,它运行良好,但是当我尝试存储一个像10这样的值时,它存储为9.9 ..具体什么原因?
答案 0 :(得分:3)
您的十进制字段宽度为两位数,其中一位数字位于小数点右侧。这意味着小数点左边只有一位数字。你不可能在那个领域存储“10”。
答案 1 :(得分:2)
是的,当你说2,1你真正说的是:这个列可以存储两个数字,其中一个可以在小数点后面。 如果您希望能够保存10.1,您将使用DECIMAL(3,1),因为10.1总共有3位数。
它会发出警告,BTW:
MySQL的> SHOW CREATE TABLE t \ G.
*************************** 1。排******************** *******
表:t
创建表:CREATE TABLE t
(
a
十进制(2,1)DEFAULT'0.0'
)ENGINE = InnoDB DEFAULT CHARSET = latin1
1行(0.00秒)
的MySQL>插入t(a)价值观(10); 查询正常,1行受影响,1警告(0.00秒)
的MySQL>显示警告\ G. *************************** 1。排******************** ******* 等级:警告 代码:1264-- 消息:第1行的列'a'超出范围值 1行(0.00秒)
的MySQL>
-
编辑:当以STRICT模式(http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_traditional)运行时,它实际上会发出警告。