Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op:
Databricks SQL
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 ceiling de functie.
Syntaxis
ceil(expr [, targetScale])
Argumenten
-
expr: Een expressie die resulteert in een numerieke waarde. -
targetScale: Een optionele letterlijke geheel getal groter dan-38opgeven door het aantal cijfers achter de decimalen dat omhoog moet worden afgerond.
Retouren
Als er geen targetScale is opgegeven:
- Als
exprdat het isDECIMAL(p, s), retourneertDECIMAL(p - s + 1, 0). - Voor alle andere gevallen wordt een BIGINT geretourneerd.
Als targetScale dit is opgegeven en expr een:
TINYINTGeeft als resultaat een
DECIMAL(p, 0)metp = max(3, -targetScale + 1).SMALLINTGeeft als resultaat een
DECIMAL(p, 0)metp = max(5, -targetScale + 1).INTEGERGeeft als resultaat een
DECIMAL(p, 0)metp = max(10, -targetScale + 1)).BIGINTGeeft als resultaat een
DECIMAL(p, 0)metp = max(20, -targetScale + 1)).FLOATGeeft als resultaat een
DECIMAL(p, s)metp = max(14, -targetScale + 1))ens = min(7, max(0, targetScale))DOUBLEGeeft als resultaat een
DECIMAL(p, s)metp = max(30, -targetScale + 1))ens = min(15, max(0, targetScale))DECIMAL(p_in, s_in)Geeft als resultaat een
DECIMAL(p, s)metp = max(p_in - s_in + 1, -targetScale + 1))ens = 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 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