mysql存储问题

时间:2010-06-01 15:28:34

标签: mysql

我有一个像十进制(2,1)这样的列,它运行良好,但是当我尝试存储一个像10这样的值时,它存储为9.9 ..具体什么原因?

2 个答案:

答案 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)运行时,它实际上会发出警告。