MySQL จะแสดงข้อผิดพลาดหากเกิด overflow ระหว่างการประเมินนิพจน์ตัวเลข ตัวอย่าง: ค่า BIGINT ที่มากที่สุดคือ 9223372036854775807 นิพจน์ต่อไปจะก่อให้เกิดข้อผิดพลาด:
mysql> SELECT 9223372036854775807 + 1; ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807+1)'
MySQL จัดการ overflow แบบนี้ได้ 2 วิธี:
1. แปลงค่าเป็น UNSIGNED
MySQL อนุญาตการคำนวณดังกล่าวโดยแปลงค่าเป็น unsigned:
mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1; +------------------------------------------+ | CAST(9223372036854775807 AS UNSIGNED) +1 | +------------------------------------------+ | 9223372036854775808 | +------------------------------------------+ 1 row in set (0.07 sec)
2. ใช้ Exact-Value Arithmetic
MySQL ใช้ exact-value arithmetic จัดการนิพจน์ได้ เนื่องจาก overflow ขึ้นอยู่กับช่วงค่าของ operands ตัวอย่างคำนวณด้วยค่า DECIMAL:
mysql> SELECT 9223372036854775807.0 + 1; +---------------------------+ | 9223372036854775807.0 + 1 | +---------------------------+ | 9223372036854775808.0 | +---------------------------+ 1 row in set (0.01 sec)