Delen via


ceiling-functie

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger

Retourneert het kleinste getal dat niet kleiner is dan expr afgerond op targetScale cijfers ten opzichte van het decimaalteken. Deze functie is een synoniem van ceil de functie.

Syntaxis

ceiling(expr [, targetScale])

Argumenten

  • expr: Een expressie die resulteert in een numerieke waarde.
  • targetScale: Een optionele letterlijke geheel getal groter dan -38 opgeven hoeveel cijfers na de decimalen moeten worden afgerond.

Retouren

Als er geen targetScale is opgegeven:

  • Als expr dat het is DECIMAL(p, s), retourneert DECIMAL(p - s + 1, 0).
  • Voor alle andere gevallen wordt een BIGINT geretourneerd.

Als targetScale dit is opgegeven en expr een:

  • TINYINT

    Geeft als resultaat een DECIMAL(p, 0) met p = max(3, -targetScale + 1).

  • SMALLINT

    Geeft als resultaat een DECIMAL(p, 0) met p = max(5, -targetScale + 1).

  • INTEGER

    Geeft als resultaat een DECIMAL(p, 0) met p = max(10, -targetScale + 1)).

  • BIGINT

    Geeft als resultaat een DECIMAL(p, 0) met p = max(20, -targetScale + 1)).

  • FLOAT

    Geeft als resultaat een DECIMAL(p, s) met p = max(14, -targetScale + 1)) en s = min(7, max(0, targetScale))

  • DOUBLE

    Geeft als resultaat een DECIMAL(p, s) met p = max(30, -targetScale + 1)) en s = min(15, max(0, targetScale))

  • DECIMAL(p_in, s_in)

    Geeft als resultaat een DECIMAL(p, s) met p = max(p_in - s_in + 1, -targetScale + 1)) en s = min(s_in, max(0, targetScale))

Als targetScale dit negatief is, treedt de afronding op op -targetScale cijfers links van het decimaalteken.

De standaardwaarde targetScale is 0, waarmee het volgende grotere integraal getal naar boven wordt afgerond.

Wanneer targetScale is opgegeven met een integraal invoertype, wordt Azure Databricks ARITHMETIC_OVERFLOW als het resultaat het uitvoertype overloopt.

Waarschuwing

Als in Databricks Runtime spark.sql.ansi.enabled is false, veroorzaakt een overloop geen fout, maar 'verpakt' het resultaat.

Algemene foutvoorwaarden

Voorbeelden

> SELECT ceiling(-0.1);
 0

> SELECT ceiling(5);
 5

> SELECT ceiling(5.4);
 6

> SELECT ceiling(3345.1, -2);
 3400

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

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