ช่วงค่าของชนิดข้อมูล DECIMAL ใหญ่กว่า INTEGER และ BIGINT BIGINT เก็บได้สูงสุด 18446744073709551615 แต่ DECIMAL สามารถเก็บ DECIMAL(65,0) ได้ โดย x แทนตัวเลข 9 จำนวน 65 หลัก DECIMAL เก็บตัวเลขในรูปแบบไบต์ สูตรคำนวณพื้นที่จัดเก็บ:
StorageRequirementInBytes = (x/9) + remaining; WHERE remaining = round_up((x%9) / 2)
DECIMAL(65,0) จะเก็บได้:
99999999999999999999999999999999999999999999999999999999999999999
มาสร้างตารางทดสอบ:
mysql> create table DecimalDemo ( UserId DECIMAL(65,0) ); Query OK, 0 rows affected (0.62 sec)
แทรกข้อมูล:
mysql> insert into DecimalDemo values(99999999999999999999999999999999999999999999999999999999999999999); Query OK, 1 row affected (0.16 sec) mysql> insert into DecimalDemo values(99999999999999999999999999999999999999999999999999999999999999999.0); Query OK, 1 row affected (0.28 sec)
แสดงข้อมูล:
mysql> select * from DecimalDemo;
ผลลัพธ์
+-------------------------------------------------------------------+ | UserId | +-------------------------------------------------------------------+ | 99999999999999999999999999999999999999999999999999999999999999999 | | 99999999999999999999999999999999999999999999999999999999999999999 | +-------------------------------------------------------------------+ 2 rows in set (0.00 sec)
หากพยายามสร้าง DECIMAL(66,0) จะเกิดข้อผิดพลาด:
mysql> create table DecimalDemo1 ( UserId DECIMAL(66,0) ); ERROR 1426 (42000): Too-big precision 66 specified for 'UserId'. Maximum is 65.