Любит ли MySQL (5.0.45) выполнять странные внутренние типы с неподписанной математикой? Я храню целые числа без знака, но при выборе основной арифметики я получаю возмутительные числа:
mysql> create table tt ( a integer unsigned , b integer unsigned , c float );
Query OK, 0 rows affected (0.41 sec)
mysql> insert into tt values (215731,216774,1.58085);
Query OK, 1 row affected (0.00 sec)
mysql> select a,b,c from tt;
+--------+--------+---------+
| a | b | c |
+--------+--------+---------+
| 215731 | 216774 | 1.58085 |
+--------+--------+---------+
1 row in set (0.02 sec)
mysql> select (a-b)/c from tt;
+---------------------+
| (a-b)/c |
+---------------------+
| 1.1668876878652e+19 |
+---------------------+
1 row in set (0.00 sec)
mysql> -- WHAT?
mysql> select a-b from tt;
+----------------------+
| a-b |
+----------------------+
| 18446744073709550573 |
+----------------------+
1 row in set (0.02 sec)
Я полагаю, это связано с тем, что вычитание является отрицательным, и поэтому оно пытается отобразить результаты в без знака и переполнение? Я могу решить эту проблему, очевидно, изменив все на подписанное, но я бы предпочел иметь немного больше положительного пространства с моими 32-разрядными целыми числами.
Я раньше не сталкивался с этим на MySQL, и я почти уверен, что много сделал с неподписанной арифметикой MySQL; это общая проблема?