hnwの日記

MySQLには1足せない数値リテラルがある

MySQLの数値リテラルに+1すると怒られたり、オーバーフローしたりすることがあります。下記は僕の手元のMySQL5.5.22での実行結果です。

mysql> select 9223372036854775807+1;
ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'


もう足せないよ、と怒られてしまいました。しかし、それより1大きい数は+1しても怒られません。

mysql> select 9223372036854775808+1;
+-----------------------+
| 9223372036854775808+1 |
+-----------------------+
|   9223372036854775809 |
+-----------------------+
1 row in set (0.00 sec)
続きを読む