Kategorien:

Numerische Funktionen (Rundung und Kürzung)

CEIL

Gibt Werte aus input_expr zurück, die auf die nächste gleichgroße oder größere Ganzzahl oder auf den nächsten gleichgroßen oder größeren Wert mit der angegebenen Anzahl von Nachkommastellen gerundet sind.

Siehe auch:

FLOOR , ROUND , TRUNCATE , TRUNC

Syntax

CEIL( <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 CEIL(3.14::FLOAT, 1) zurückgegebene Datentyp ist FLOAT.

  • Die von CEIL(3.14, 1) zurückgegebene NUMBER hat eine Skalierung von 1 und eine Präzision von mindestens 3.

  • Die von CEIL(-9.99, 0) zurückgegebene NUMBER hat eine Skalierung von 0 und eine Präzision von mindestens 2.

  • Die von CEIL(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 aufgerundet werden, ist der Wert näher an 0. So ergibt beispielsweise CEIL(-1,9) den Wert -1, nicht -2.

  • Wenn die Zahl durch das Aufrunden 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 CEIL(135.135), CEIL(-975.975);
+---------------+----------------+
| CEIL(135.135) | CEIL(-975.975) |
|---------------+----------------|
|           136 |           -975 |
+---------------+----------------+
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 TRANSIENT TABLE test_ceiling (n FLOAT, scale INTEGER);
INSERT INTO test_ceiling (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, ceil(n, scale)
  FROM test_ceiling
  ORDER BY n, scale;
+----------+-------+----------------+
|        N | SCALE | CEIL(N, SCALE) |
|----------+-------+----------------|
| -975.975 |    -1 |       -970     |
| -975.975 |     0 |       -975     |
| -975.975 |     2 |       -975.97  |
|  135.135 |    -2 |        200     |
|  135.135 |     0 |        136     |
|  135.135 |     1 |        135.2   |
|  135.135 |     3 |        135.135 |
|  135.135 |    50 |        135.135 |
|  135.135 |  NULL |           NULL |
+----------+-------+----------------+
Copy