Inhaltsverzeichnis
MySQL 5.1 bietet Unterstützung für Präzisionsberechnungen: eine Verarbeitung numerischer Werte, die extrem genaue Ergebnisse und eine sehr gute Kontrolle über ungültige Werte garantiert. Präzisionsberechnungen beruhen auf zwei Features:
SQL-Modi, die steuern, wie streng der Server mit ungültigen Daten umgeht
die MySQL-Bibliothek für Festkommaarithmetik
Diese Features haben mehrere Auswirkungen auf numerische Operationen:
Präzisionsberechnungen: In
Berechnungen mit genauen Zahlen werden keine Fließkommafehler
eingebaut. Stattdessen wird eine genaue Anzahl Stellen
(Precision) verwendet. So wird zum Beispiel eine Zahl wie
.0001
nicht als Näherungswert, sondern als
genauer Wert verstanden, und wenn man ihn 10.000 Mal addiert,
erhält man genau 1
als Ergebnis und keinen
Wert, der bloß „annähernd“ gleich 1 ist.
Wohldefiniertes
Rundungsverhalten: Bei genauen Zahlen orientiert sich
das Ergebnis von ROUND()
am Argument der
Funktion und nicht an Umgebungsfaktoren wie etwa der
Funktionsweise der zugrunde liegenden C-Bibliothek.
Plattformunabhängigkeit: Operationen mit genauen numerischen Werten gleichen sich auf allen Plattformen, wie beispielsweise Windows und Unix.
Kontrolle über den Umgang mit ungültigen
Werten: Überlauf und Division durch null können
erkannt und als Fehler behandelt werden. So können Sie
beispielsweise einen Wert, der für eine Spalte zu groß ist,
als Fehler behandeln, anstatt ihn auf den Datentyp der Spalte
zurechtschustern zu lassen. Ebenso können Sie eine Division
durch null als Fehler erkennen, anstatt ihn als Operation mit
einem NULL
-Ergebnis zu handhaben. Durch die
Einstellung der Systemvariablen sql_mode
bestimmen Sie selbst, welchen Weg Sie einschlagen.
Ein wichtiges Ergebnis all dieser Features ist, dass MySQL 5.1 dem SQL-Standard sehr nahe kommt.
Die folgenden Ausführungen betreffen mehrere Aspekte der
Funktionsweise von Präzisionsberechnungen (einschließlich
möglicher Inkompatibilitäten mit älteren Anwendungen). Zum
Schluss geben wir einige Beispiele, um zu zeigen, wie präzise MySQL
5.1 numerische Operationen ausführt. Wie man mit der
Systemvariablen sql_mode
den SQL-Modus einstellt,
erfahren Sie unter Abschnitt 5.2.5, „Der SQL-Modus des Servers“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.