MariaDB hat einen FLOOR()
Funktion und ein TRUNCATE()
Funktion, die abhängig vom genauen Wert ihrer Argumente dieselben oder unterschiedliche Ergebnisse zurückgeben kann.
Unten ist ein kurzer Überblick über den Unterschied zwischen FLOOR()
und TRUNCATE()
in MariaDB.
Der Unterschied
Hier ist der Unterschied zwischen den einzelnen Funktionen auf den Punkt gebracht:
FLOOR()
gibt den größten ganzzahligen Wert zurück, der nicht größer als sein Argument ist.TRUNCATE()
kürzt sein Argument auf eine angegebene Anzahl von Dezimalstellen.
Syntax
Hier sind zunächst die Syntaxen der einzelnen Funktionen.
FLOOR()
Die Syntax für FLOOR()
geht so:
FLOOR(X)
Es gibt den größten ganzzahligen Wert zurück, der nicht größer als X
ist .
TRUNCATE()
Die Syntax für TRUNCATE()
geht so:
TRUNCATE(X,D)
TRUNCATE()
gibt die Zahl X
zurück , abgeschnitten zu D
Nachkommastellen.
Beispiel
Hier ist ein Vergleich, um den Unterschied zwischen FLOOR()
zu demonstrieren und TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Ergebnis:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
In diesem Fall ist die Zahl ein negativer Wert und das Ergebnis jeder Funktion ist unterschiedlich.
FLOOR()
gab die größte Ganzzahl zurück (-4
) Wert nicht größer als sein Argument.- Das
TRUNCATE()
Funktion hingegen schneidet die Zahl einfach an der angegebenen Dezimalstelle ab.
Gleiches Ergebnis
Beide Funktionen können manchmal das gleiche Ergebnis zurückgeben. Es hängt alles vom Wert der übergebenen Argumente ab.
Wenn wir die Zahlen in positive Werte ändern, liefern beide Funktionen das gleiche Ergebnis:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Ergebnis:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Das zweite Argument
Ein weiterer offensichtlicher Unterschied zwischen den beiden Funktionen besteht darin, dass TRUNCATE()
akzeptiert/erfordert ein zweites Argument. Dies kann zu einem Ergebnis führen, das einen Bruchteil enthält.
FLOOR()
gibt jedoch nur eine Ganzzahl zurück, sodass niemals ein Bruchteil zurückgegeben wird.
Beispiel
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Ergebnis:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
Das ROUND()
Funktion
Beide Funktionen unterscheiden sich von ROUND()
Funktion, die ihr Argument auf eine angegebene Anzahl von Dezimalstellen rundet.