Freigeben über


floor-Funktion

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

Gibt die größte Zahl zurück, die nicht größer als expr ist, abgerundet auf targetScale-Ziffern in Relation zum Dezimalpunkt.

Syntax

floor(expr [, targetScale])

Argumente

  • expr: Ein Ausdruck, der in einen numerischen Wert ausgewertet wird.
  • targetScale: Ein optionaler INTEGER-Literal größer als -38 gibt an, wie viele Ziffern nach dem Dezimalpunkt nach der Abrundung 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ächstkleinere integrale Zahl abgerundet 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 floor(-0.1);
 -1

> SELECT floor(5);
 5

> SELECT floor(3345.1, -2);
 3300

> SELECT floor(-12.345, 1);
 -12.4

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