ลองยกตัวอย่างสำหรับ int (10) อันที่มีคีย์เวิร์ด zerofill หนึ่งอันไม่ใช่ตารางชอบ:
create table tb_test_int_type(
int_10 int(10),
int_10_with_zf int(10) zerofill,
unit int unsigned
);
ลองแทรกข้อมูล:
insert into tb_test_int_type(int_10, int_10_with_zf, unit)
values (123456, 123456,3147483647), (123456, 4294967291,3147483647)
;
แล้วก็
select * from tb_test_int_type;
# int_10, int_10_with_zf, unit
'123456', '0000123456', '3147483647'
'123456', '4294967291', '3147483647'
เราเห็นได้ว่า
ด้วยคำหลักzerofill
จำนวนที่น้อยกว่า 10 จะเติม 0 แต่หากไม่มีคำหลักzerofill
นั้น
ประการที่สองกับคำzerofill
, int_10_with_zf กลายเป็นชนิด int Out of range value for column.....
ไม่ได้ลงนามถ้าคุณแทรกลบคุณจะได้รับข้อผิดพลาด แต่คุณสามารถแทรกลบถึง int_10 นอกจากนี้หากคุณแทรก 4294967291 ไปยัง int_10 คุณจะได้รับข้อผิดพลาดOut of range value for column.....
สรุป:
int (X) โดยไม่มีคำหลักzerofill
เท่ากับช่วง int -2147483648 ~ 2147483647
int (X) พร้อมคีย์เวิร์ดzerofill
ฟิลด์เท่ากับช่วง int ที่ไม่ได้ลงชื่อ 0 ~ 4294967295 ถ้าความยาวของ NUM น้อยกว่า X จะเติม 0 ทางซ้าย