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:

CEIL , ROUND , TRUNCATE , TRUNC

Syntax

FLOOR( <input_expr> [, <scale_expr> ] )
Copy

Argumente

input_expr

Der Wert oder Ausdruck, der verarbeitet werden soll. Der Datentyp sollte aus einem der numerischen Datentypen bestehen, z. B. FLOAT oder NUMBER.

scale_expr

Die Anzahl der Stellen, die die Ausgabe nach dem Dezimalpunkt enthalten soll. Der Ausdruck sollte eine Ganzzahl von -38 bis +38 ergeben.

Der Standardwert für scale_expr ist 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.

  • 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_expr negativ 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_expr größer als die Skalierung des Eingabeausdrucks ist, hat die Funktion keine Auswirkungen.

  • Wenn entweder input_expr oder scale_expr den 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 |
+----------------+-----------------+
Copy

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)
   ;
Copy

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 |
+----------+-------+-----------------+
Copy