我的SQL如下:
create table test (
id tinyint unsigned,
id2 smallint unsigned
);
insert into test values ( 333, 66666);
select * from test
+------+-------+
| id | id2 |
+------+-------+
| 255 | 65535 |
+------+-------+
我知道tinyint
的最大值为255,smallint
的最大值为65,535。我很好奇的是上面的结果是如何产生的。
答案 0 :(得分:4)
http://dev.mysql.com/doc/refman/5.7/en/insert.html
将数字列设置为位于列外部的值 范围。该值将被剪切到该范围的最近端点。
你也应该看到有关此问题的警告。请注意,在STRICT
模式下,除非您使用INSERT IGNORE
,否则error会失败。