Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警告#1264:mysql中出现超出范围的错误_Mysql_Decimal - Fatal编程技术网

警告#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我知道解释很好。这对我来说也是正确的答案。