Numerischer Datentyp in SQL
Numerische Daten in SQL zu erzeugen ist recht einfach: Man kann eine Zahl als Literal eingeben, sie aus einer Tabellenspalte holen oder sie durch Berechnungen erzeugen.
Bei Berechnungen kannst du alle Standard-Rechenoperationen verwenden (+, -, *, / usw.) und die Auswertungsreihenfolge mit Klammern ändern.
MySQL 8.1SELECT 2 * ((22 - 16) / (2 + 1)) AS calc_example;
Mathematische Funktionen
Für die meisten mathematischen Berechnungen, etwa zum Potenzieren einer Zahl oder zum Ziehen der Quadratwurzel, gibt es in SQL eingebaute numerische Funktionen. Hier einige Beispiele für solche Funktionen:
Eine Liste aller numerischen Funktionen mit Beschreibung und Beispielen findest du im Handbuch.
Eine Liste aller numerischen Funktionen mit Beschreibung und Beispielen findest du im Handbuch.
Zahlen runden
Beim Arbeiten mit Gleitkommazahlen muss man die Zahlen nicht immer mit voller Genauigkeit speichern oder anzeigen. So lassen sich Geldtransaktionen mit einer Genauigkeit von 6 Nachkommastellen speichern, aber mit 2 Nachkommastellen anzeigen, also bis auf den Cent genau.
Zum Runden numerischer Daten gibt es in SQL die folgenden 4 Funktionen: CEILING, FLOOR, ROUND, TRUNCATE.
Die Funktionen CEILING und FLOOR runden eine Zahl auf die nächste ganze Zahl auf bzw. ab.
MySQL 8.1SELECT CEILING(69.69) AS ceiling, FLOOR(69.69) AS floor;
Zum Runden numerischer Daten gibt es in SQL die folgenden 4 Funktionen: CEIL, FLOOR, ROUND, TRUNC.
Die Funktionen CEIL und FLOOR runden eine Zahl auf die nächste ganze Zahl auf bzw. ab.
MySQL 8.1SELECT CEIL(69.69) AS ceiling, FLOOR(69.69) AS floor;
Zum Runden auf die nächste ganze Zahl gibt es die Funktion ROUND, die jede Zahl, deren Nachkommateil größer oder gleich 0,5 ist, aufrundet und andernfalls abrundet.
MySQL 8.1SELECT ROUND(69.499), ROUND(69.5), ROUND(69.501);
Die Funktion ROUND erlaubt es außerdem, eine Zahl auf eine bestimmte Anzahl von Nachkommastellen zu runden. Dafür nimmt die Funktion als zweites optionales Argument die Anzahl der zu behaltenden Nachkommastellen entgegen.
MySQL 8.1SELECT ROUND(69.7171,1), ROUND(69.7171,2), ROUND(69.7171,3);
Das zweite Argument der Funktion ROUND kann auch negative Werte annehmen. In diesem Fall werden die Ziffern links vom Dezimalpunkt in der durch das Argument angegebenen Anzahl auf Null gesetzt, und der Nachkommateil wird abgeschnitten.
MySQL 8.1SELECT ROUND(1691.7,-1), ROUND(1691.7,-2), ROUND(1691.7,-3);
Die Funktion TRUNCATE ist analog zur Funktion ROUND, sie kann ebenfalls einen 2. optionalen Parameter entgegennehmen, nur dass sie statt zu runden einfach die nicht benötigten Ziffern abschneidet.
MySQL 8.1SELECT TRUNCATE(69.7979,1), TRUNCATE(69.7979,2), TRUNCATE(69.7979,3);
Und was liefert der folgende Ausdruck?
MySQL 8.1SELECT TRUNCATE(69.7979, -1);
Die Funktion TRUNC ist analog zur Funktion ROUND, sie kann ebenfalls einen 2. optionalen Parameter entgegennehmen, nur dass sie statt zu runden einfach die nicht benötigten Ziffern abschneidet.
MySQL 8.1SELECT TRUNC(69.7979,1), TRUNC(69.7979,2), TRUNC(69.7979,3);
Und was liefert der folgende Ausdruck?
MySQL 8.1SELECT TRUNC(69.7979, -1);
Arbeiten mit vorzeichenbehafteten Zahlen
Beim Arbeiten mit numerischen Daten, in denen negative Werte vorkommen können, können die Funktionen SIGN und ABS hilfreich sein.
Die Funktion SIGN gibt den Wert -1 zurück, wenn die Zahl negativ ist, 0, wenn die Zahl null ist, und 1, wenn die Zahl positiv ist.
MySQL 8.1SELECT SIGN(-69), SIGN(0), SIGN(69);
Die Funktion ABS gibt den Absolutwert einer Zahl zurück.
MySQL 8.1SELECT ABS(-69), ABS(0), ABS(69);