警告#1264:mysql中出现超出范围的错误
以下查询:警告#1264:mysql中出现超出范围的错误,mysql,decimal,Mysql,Decimal,以下查询: 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) 请帮助我指出错误
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)
请帮助我指出错误。将字段类型更改为
十进制(4,2)
。详情:
十进制列的声明语法为DECIMAL(M,D)。MySQL 5.7中参数的取值范围如下:
M是最大位数(精度)。它的范围是1到65
D是小数点(刻度)右侧的位数。其范围为0到30,且不得大于M
我认为您出现此错误是因为
year\u exp
字段是DECIMAL(2,2)
,您需要DECIMAL(4,2)
<代码>十进制(2,2)表示精度为2的数字,最多可保留2位小数。但这个数字有4位精度
MSDN的链接讨论十进制精度
下面是一个具有类似结果的快速测试(在SQLServer2008中完成,但我认为您使用的是MySQL…)
1) 创建了带有测试列的表:
CREATE TABLE testtable (testcolumn DECIMAL(2,2))
2) 运行insert语句…:
INSERT INTO testtable (testcolumn) VALUES (23.45)
。。。收到这个错误
Msg 8115,第16级,第8状态,第1行将数值转换为数据类型数值时出现算术溢出错误 (评论:我最喜欢的错误之一…“无法将数字转换为数字…”哈哈) 3) 将色谱柱改为合适的规格
ALTER TABLE testtable ALTER COLUMN testcolumn DECIMAL(4,2)
4) 重新运行相同的insert语句。它起作用了
如果有帮助,请告诉我。现在插入的记录值是多少?@inhan thanksinhan。值为0.99请使用
decimal(4,2)
修复错误,并阅读如何在MySQL文档中为该数据类型指定正确的值。@注意,为什么decimal(2,2)不接受23.45这样的值。小数点(2,2)表示小数点前后允许正好有2位。@NB我知道解释很好。这对我来说也是正确的答案。