- Kategorien:
Numerische Funktionen (Rundung und Kürzung)
FLOOR¶
Gibt Werte aus input_expr zurück, die auf die nächste gleichgroße oder kleinere Ganzzahl oder auf den nächsten gleichgroßen oder kleineren Wert mit der angegebenen Anzahl von Nachkommastellen gerundet sind.
- Siehe auch:
Syntax¶
FLOOR( <input_expr> [, <scale_expr> ] )
Argumente¶
input_exprThe value or expression to operate on. The data type should be one of the numeric data types, such as DECFLOAT, FLOAT, or NUMBER.
scale_exprThe number of digits the output should include after the decimal point.
Der Standardwert für
scale_exprist null. Das bedeutet, dass die Funktion alle Nachkommastellen entfernt.Informationen zu negativen Skalierungen finden Sie in den folgenden Nutzungshinweisen.
Rückgabewerte¶
Der Rückgabetyp richtet sich nach dem Eingabetyp:
Wenn der Eingabeausdruck FLOAT ist, ist der zurückgegebene Typ FLOAT.
If the input expression is DECFLOAT, the returned type is DECFLOAT.
Wenn der Eingabeausdruck NUMBER ist, ist der zurückgegebene Typ NUMBER.
Wenn die Eingabeskalierung konstant ist:
Wenn die Eingabeskala positiv ist, hat der zurückgegebene Typ eine Skala, die der Eingabeskala entspricht, und eine Präzision, die groß genug ist, um jedes mögliche Ergebnis zu umfassen.
Wenn die Eingabeskalierung negativ ist, hat der zurückgegebene Typ eine Skalierung von 0.
Wenn die Eingabeskalierung nicht konstant ist, entspricht die Skalierung des zurückgegebenen Typs der des Eingabeausdrucks.
Wenn die Skalierung null ist, dann ist der Wert effektiv eine INTEGER.
Beispiel:
Der von FLOOR(3.14::FLOAT, 1) zurückgegebene Datentyp ist FLOAT.
Die von FLOOR(3.14, 1) zurückgegebene NUMBER hat eine Skalierung von 1 und eine Präzision von mindestens 3.
Die von FLOOR(-9.99, 0) zurückgegebene NUMBER hat eine Skalierung von 0 und eine Präzision von mindestens 2.
Die von FLOOR(33.33, -1) zurückgegebene NUMBER hat eine Skalierung von 0 und eine Präzision von mindestens 3.
Nutzungshinweise¶
Wenn
scale_exprnegativ ist, wird die Anzahl der Stellen vor dem Dezimalpunkt angegeben, an die die Zahl angepasst werden soll. Wenn die Skalierung beispielsweise -2 beträgt, ist das Ergebnis ein Vielfaches von 100.Wenn
scale_exprgrößer als die Skalierung des Eingabeausdrucks ist, hat die Funktion keine Auswirkungen.Wenn entweder
input_exproderscale_exprden Wert NULL haben, lautet das Ergebnis NULL.Wenn negative Zahlen abgerundet werden, ist der Wert weiter entfernt von 0. So ergibt beispielsweise FLOOR(-1,1) den Wert -2, nicht -1.
Wenn die Zahl durch das Abrunden außerhalb des Wertebereichs des Datentyps liegt, wird ein Fehler zurückgegeben.
Beispiele¶
In diesem Beispiel wird die Funktion ohne den Parameter scale_expr veranschaulicht:
SELECT FLOOR(135.135), FLOOR(-975.975); +----------------+-----------------+ | FLOOR(135.135) | FLOOR(-975.975) | |----------------+-----------------| | 135 | -976 | +----------------+-----------------+
In diesem Beispiel wird die Funktion mit dem Parameter scale_expr veranschaulicht, einschließlich Skalierung mit negativen Zahlen:
Erstellen Sie eine Tabelle, und füllen Sie diese:
CREATE TABLE test_floor (n FLOAT, scale INTEGER); INSERT INTO test_floor (n, scale) VALUES (-975.975, -1), (-975.975, 0), (-975.975, 2), ( 135.135, -2), ( 135.135, 0), ( 135.135, 1), ( 135.135, 3), ( 135.135, 50), ( 135.135, NULL) ;Ausgabe:
SELECT n, scale, FLOOR(n, scale) FROM test_floor ORDER BY n, scale; +----------+-------+-----------------+ | N | SCALE | FLOOR(N, SCALE) | |----------+-------+-----------------| | -975.975 | -1 | -980 | | -975.975 | 0 | -976 | | -975.975 | 2 | -975.98 | | 135.135 | -2 | 100 | | 135.135 | 0 | 135 | | 135.135 | 1 | 135.1 | | 135.135 | 3 | 135.135 | | 135.135 | 50 | 135.135 | | 135.135 | NULL | NULL | +----------+-------+-----------------+