Tut MySQL (5.0.45) gerne seltsame interne Typumwandlungen mit unsignierten Mathe? Ich bin zu speichern ganze Zahlen unsigned aber als Grundrechen Auswahl ich empörend Zahlen:MySQL ganze Zahl vorzeichenlose arithmetische Probleme?
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)
Ich nehme an, dies mit der Tatsache zu tun hat, dass die Subtraktion negativ ist und somit versucht, die Ergebnisse in ein unsigned abzubilden und überfüllt ? Ich kann das scheinbar lösen, indem ich alles auf unterschrieben ändere, aber ich hätte lieber etwas mehr Platz mit meinen 32-Bit-Ganzzahlen.
Ich habe nicht schon vorher auf MySQL und ich bin mir ziemlich sicher, dass ich viel mit unsigned MySQL Arithmetik getan habe; Ist das ein häufiges Problem?
Duplizieren: http://stackoverflow.com/questions/1517556/mysql-query-gone-wild –