¿Le gusta a MySQL (5.0.45) hacer tipos de letra internos extraños con matemática sin signo? Estoy almacenando enteros sin signo, pero la hora de seleccionar la aritmética básica consigo cifras escandalosas:MySQL entero sin signo problemas aritméticos?
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)
Asumo que esto tiene que ver con el hecho de que la resta es negativo y por lo tanto se trata de un mapa de los resultados en un sin firmar y desbordante ? Puedo resolver esto aparentemente cambiando todo para firmar, pero preferiría tener un poco más de espacio positivo con mis enteros de 32 bits.
No me he encontrado con esto antes en MySQL y estoy bastante seguro de que he hecho muchas cosas con la aritmética MySQL sin firmar; ¿Es este un problema común?
duplicado: http://stackoverflow.com/questions/1517556/mysql-query-gone-wild –