2013-01-08 37 views
8

下面的查询:警告#1264:超出范围的错误在mysql中

INSERT INTO skill (`emp_number`, `skill_id`, `year_exp`, `comments`) 
VALUES ('4', '3', '23.45', '') 

它产生错误:

1 row inserted. 
Warning: #1264 Out of range value for column 'year_exp' at row 1 
year_exp column is of datatype decimal(2,2) 

请帮我品脱出错误。

+1

现在插入**记录的值是多少? – inhan

+0

@inhan thanksinhan。值为0.99 – Misty

+2

使用'decimal(4,2)'修复错误,并阅读如何在MySQL文档中指定该数据类型的正确值。 –

回答

8

将字段类型更改为decimal(4,2)。详细信息:https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

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

M是最大位数(精度)。它的范围是1到65.

D是小数点右边的数字(比例)。它有一个范围为0〜30,但不得超过M.

+0

谢谢。 现在我明白了 – Misty

+1

@CharlieS你是对的,编辑。 – czachor

11

我相信,因为year_expDECIMAL(2,2)你有这样大的错误,并希望DECIMAL(4,2)DECIMAL(2,2)表示多个精度2,最多2位小数。但是这个数字有4位数的精度。

此链接指向MSDN的小数精度。

http://msdn.microsoft.com/en-US/library/ms187746(v=SQL.90).aspx

下面是一个简单的测试了类似的结果(在SQL Server 2008中完成,但我认为我对你的MySQL ......)

1)创建一个表,测试柱:

CREATE TABLE testtable (testcolumn DECIMAL(2,2)) 

2)冉插入语句...:

INSERT INTO testtable (testcolumn) VALUES (23.45) 

...并收到此错误...

消息8115,级别16,状态8,行1个
算术溢出错误转换数字数据类型的数字。

(点评:我最喜欢的错误之一...... “不能数转换成数字......” 哈哈)

3)变更列适当的规范

ALTER TABLE testtable ALTER COLUMN testcolumn DECIMAL(4,2) 

4)重新运行相同的插入语句。有用。

请让我知道这是否有帮助。

+0

谢谢你@ user1958225 – Misty

+0

这个解释很好。这对我来说是正确的答案为好。 – junerockwell