Freigeben über


ceil-Funktion

Gilt für:Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 11.3 LTS und höher

Gibt die kleinste Zahl zurück, die nicht kleiner als expr gerundet auf targetScale Ziffern relativ zum Dezimalpunkt ist. Diese Funktion ist ein Synonym für ceiling Funktion.

Syntax

ceil(expr [, targetScale])

Argumente

  • expr: Ein Ausdruck, der in einen numerischen Wert ausgewertet wird.
  • targetScale: Ein optionaler INTEGER-Literal größer als -38 die Angabe, wie viele Ziffern nach dem Dezimalpunkt nach der Abrundeung angegeben werden.

Gibt zurück

Wenn keine targetScale angegeben wird:

  • Wenn expr gleich DECIMAL(p, s) ist, wird DECIMAL(p - s + 1, 0) zurückgegeben.
  • In allen anderen Fällen wird ein BIGINT-Wert zurückgegeben.

Wenn targetScale angegeben und expr Folgendes ist:

  • TINYINT

    Gibt einen DECIMAL(p, 0)-Wert mit p = max(3, -targetScale + 1) zurück.

  • SMALLINT

    Gibt einen DECIMAL(p, 0)-Wert mit p = max(5, -targetScale + 1) zurück.

  • INTEGER

    Gibt einen DECIMAL(p, 0)-Wert mit p = max(10, -targetScale + 1)) zurück.

  • BIGINT

    Gibt einen DECIMAL(p, 0)-Wert mit p = max(20, -targetScale + 1)) zurück.

  • FLOAT

    Gibt einen DECIMAL(p, s)-Wert mit p = max(14, -targetScale + 1)) und s = min(7, max(0, targetScale)) zurück.

  • DOUBLE

    Gibt einen DECIMAL(p, s)-Wert mit p = max(30, -targetScale + 1)) und s = min(15, max(0, targetScale)) zurück.

  • DECIMAL(p_in, s_in)

    Gibt einen DECIMAL(p, s)-Wert mit p = max(p_in - s_in + 1, -targetScale + 1)) und s = min(s_in, max(0, targetScale)) zurück.

Wenn targetScale negativ ist, erfolgt die Rundung an -targetScale Ziffern links neben dem Dezimalpunkt auf.

Der Standardwert targetScale ist 0, der auf die nächste größere integrale Zahl gerundet wird.

Wenn targetScale mit einem integralen Eingabetyp angegeben wird, löst Azure Databricks ARITHMETIC_OVERFLOW aus, wenn das Ergebnis den Ausgabetyp überläuft.

Warnung

Wenn in Databricks Runtime spark.sql.ansi.enabled ist false, führt ein Überlauf nicht zu einem Fehler, sondern "umschließt" stattdessen das Ergebnis.

Häufige Fehlerbedingungen

Beispiele

> SELECT ceil(-0.1);
 0

> SELECT ceil(5);
 5

> SELECT ceil(5.4);
 6

> SELECT ceil(3345.1, -2);
 3400

> SELECT ceil(-12.345, 1);
 -12.3

-- Rounding 127 to the nearest 10 produces 130, which overflows TINYINT.
> SELECT ceil(cast(127 AS TINYINT), -1);
  Error: ARITHMETIC_OVERFLOW