Premium

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.1
SELECT 2 * ((22 - 16) / (2 + 1)) AS calc_example;
calc_example
4

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:

FunktionsnameBeschreibung
POW(num, power)Berechnet eine Zahl in der angegebenen Potenz
SQRT(num)Berechnet die Quadratwurzel einer Zahl
LOG(base, num)Berechnet den Logarithmus einer Zahl zur angegebenen Basis
EXP(num)Berechnet enum
SIN(num)Berechnet den Sinus einer Zahl
COS(num)Berechnet den Kosinus einer Zahl
TAN(num)Berechnet den Tangens einer Zahl

Eine Liste aller numerischen Funktionen mit Beschreibung und Beispielen findest du im Handbuch.

FunktionsnameBeschreibung
POWER(num, power)Berechnet eine Zahl in der angegebenen Potenz
SQRT(num)Berechnet die Quadratwurzel einer Zahl
LOG(base, num)Berechnet den Logarithmus einer Zahl zur angegebenen Basis
EXP(num)Berechnet enum
SIN(num)Berechnet den Sinus einer Zahl
COS(num)Berechnet den Kosinus einer Zahl
TAN(num)Berechnet den Tangens einer Zahl

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.1
SELECT 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.1
SELECT CEIL(69.69) AS ceiling, FLOOR(69.69) AS floor;
ceilingfloor
7069

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.1
SELECT ROUND(69.499), ROUND(69.5), ROUND(69.501);
ROUND(69.499)ROUND(69.5)ROUND(69.501)
697070

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.1
SELECT ROUND(69.7171,1), ROUND(69.7171,2), ROUND(69.7171,3);
ROUND(69.7171,1)ROUND(69.7171,2)ROUND(69.7171,3)
69.769.7269.717

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.1
SELECT ROUND(1691.7,-1), ROUND(1691.7,-2), ROUND(1691.7,-3);
ROUND(1691.7,-1)ROUND(1691.7,-2)ROUND(1691.7,-3)
169017002000

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.1
SELECT TRUNCATE(69.7979,1), TRUNCATE(69.7979,2), TRUNCATE(69.7979,3);
TRUNCATE(69.7979,1)TRUNCATE(69.7979,2)TRUNCATE(69.7979,3)
69.769.7969.797

Und was liefert der folgende Ausdruck?

MySQL 8.1
SELECT 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.1
SELECT TRUNC(69.7979,1), TRUNC(69.7979,2), TRUNC(69.7979,3);
TRUNC(69.7979,1)TRUNC(69.7979,2)TRUNC(69.7979,3)
69.769.7969.797

Und was liefert der folgende Ausdruck?

MySQL 8.1
SELECT 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.1
SELECT SIGN(-69), SIGN(0), SIGN(69);
SIGN(-69)SIGN(0)SIGN(69)
-101

Die Funktion ABS gibt den Absolutwert einer Zahl zurück.

MySQL 8.1
SELECT ABS(-69), ABS(0), ABS(69);
ABS(-69)ABS(0)ABS(69)
69069