Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen
Gäller för:
Databricks SQL
Databricks Runtime 10.4 LTS och senare
Returnerar det största talet som inte är större än expr avrundat nedåt till targetScale siffror i förhållande till decimaltecknet.
Syntax
floor(expr [, targetScale])
Argument
-
expr: Ett uttryck som utvärderas till ett numeriskt uttryck. -
targetScale: En valfri INTEGER-literal som är större än-38att ange med hur många siffror efter decimaltecknet som ska avrundas nedåt.
Returer
Om inget targetScale anges:
- Om
exprärDECIMAL(p, s)returnerar .DECIMAL(p - s + 1, 0) - För alla andra fall returnerar en BIGINT.
Om targetScale anges och expr är en:
TINYINTReturnerar ett
DECIMAL(p, 0)medp = max(3, -targetScale + 1).SMALLINTReturnerar ett
DECIMAL(p, 0)medp = max(5, -targetScale + 1).INTEGERReturnerar ett
DECIMAL(p, 0)medp = max(10, -targetScale + 1)).BIGINTReturnerar ett
DECIMAL(p, 0)medp = max(20, -targetScale + 1)).FLOATReturnerar en
DECIMAL(p, s)medp = max(14, -targetScale + 1))ochs = min(7, max(0, targetScale))DOUBLEReturnerar en
DECIMAL(p, s)medp = max(30, -targetScale + 1))ochs = min(15, max(0, targetScale))DECIMAL(p_in, s_in)Returnerar en
DECIMAL(p, s)medp = max(p_in - s_in + 1, -targetScale + 1))ochs = min(s_in, max(0, targetScale))
Om targetScale är negativt sker avrundningen till -targetScale vänster om decimaltecknet.
Standardvärdet targetScale är 0, vilket avrundar ned till nästa mindre integralnummer.
När targetScale anges med en integrerad indatatyp genererar Azure Databricks ARITHMETIC_OVERFLOW om resultatet spills över utdatatypen.
Varning
I Databricks Runtime, om spark.sql.ansi.enabled är false, orsakar ett spill inte ett fel utan "omsluter" resultatet i stället.
Vanliga felvillkor
Exempel
> 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