In MariaDB TRUNCATE()
ist eine eingebaute numerische Funktion, die eine bestimmte Zahl zurückgibt, die auf eine bestimmte Anzahl von Dezimalstellen gekürzt wird.
Syntax
Die Syntax lautet wie folgt:
TRUNCATE(X,D)
Wobei X
der zu kürzende Wert ist und D
gibt an, auf wie viele Dezimalstellen gekürzt werden soll.
Beispiel
Hier ist ein Beispiel:
SELECT TRUNCATE(1.25817, 2);
Ergebnis:
+----------------------+ | TRUNCATE(1.25817, 2) | +----------------------+ | 1.25 | +----------------------+
Hier sind noch einige:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Ergebnis (bei vertikaler Ausgabe):
TRUNCATE(1.25817, 1): 1.2 TRUNCATE(1.25817, 2): 1.25 TRUNCATE(1.25817, 3): 1.258 TRUNCATE(1.25817, 4): 1.2581
Negative Dezimalstellen
Das zweite Argument kann bei Bedarf ein negativer Wert sein. Das Übergeben eines negativen Werts bewirkt Ziffern nach links der Dezimalstelle zu Null werden.
Beispiel:
SELECT TRUNCATE(5824.17, -2);
Ergebnis:
+-----------------------+ | TRUNCATE(5824.17, -2) | +-----------------------+ | 5800 | +-----------------------+
Im Vergleich zu ROUND()
Das TRUNCATE()
Funktion unterscheidet sich von ROUND()
Funktion. Das ROUND()
Die Funktion rundet die Zahl in einigen Fällen auf und in anderen ab. Das TRUNCATE()
Die Funktion hingegen schneidet die Zahl einfach ab, ohne zu runden.
Hier ist ein Vergleich, um diesen Unterschied zu demonstrieren:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Ergebnis:
+---------------------+------------------+ | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) | +---------------------+------------------+ | 3.67 | 3.68 | +---------------------+------------------+
Es unterscheidet sich auch von FLOOR()
-Funktion, die den größten ganzzahligen Wert zurückgibt, der nicht größer als ihr Argument ist. FLOOR()
akzeptiert kein zweites Argument wie ROUND()
und TRUNCATE()
tun (es gibt ohnehin immer nur eine Ganzzahl zurück).
Nicht numerische Argumente
Folgendes passiert, wenn wir ein nicht numerisches Argument angeben:
SELECT TRUNCATE('Ten', 'Two');
Ergebnis:
+------------------------+ | TRUNCATE('Ten', 'Two') | +------------------------+ | 0 | +------------------------+ 1 row in set, 3 warnings (0.000 sec)
Sehen wir uns die Warnung an:
SHOW WARNINGS;
Ergebnis:
+---------+------+------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------+ | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' | +---------+------+------------------------------------------+
Ungültige Argumentanzahl
Aufruf von TRUNCATE()
mit der falschen Anzahl von Argumenten oder ohne Argument führt zu einem Fehler:
SELECT TRUNCATE();
Ergebnis:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
Und:
SELECT TRUNCATE(1, 2, 3);
Ergebnis:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1