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.
Typ:
Gäller för:
Databricks
Databricks Runtime 19 och uppåt
Representerar flyttal på basis 10 med 16 eller 34 signifikanta siffror och ingen fast skala.
Important
DECFLOAT är i Beta. En workspace-administratör måste aktivera DECFLOAT-datatypen i Previews.
Syntax
DECFLOAT [ ( p ) ]
-
p: Det maximala antalet signifikanta decimalsiffror. Stödda värden är 16 och 34. Standard är 34.
DECFLOAT accepterar inte ett skalargument. Varje värde har sin egen exponent.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Betydande siffror | Upp till 16 | Upp till 34 |
| Minsta positiva icke-noll värde | 1E-398 |
1E-6176 |
| Största positiva ändliga värde | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Samma gränser gäller för negativa tal. Båda typerna stödjer också oändlighet och NaN.
Literals
Använd CAST med en sträng eller stödd numerisk värde. Strängar kan också innehålla NaN, Inf, eller Infinity.
Notes
DECFLOAT representerar decimalvärden såsom 0.1 exakt. Värden som överstiger precisionen kan avrundas utan fel, inklusive med TRY_CAST. Kasta decimaltext direkt. Att konvertera genom FLOAT kan DOUBLE tappa precision.
Strängutgång bevarar efterföljande nollor, så lika värden som 1.5 och 1.50 kan ge olika strängar (+15E-1 och +150E-2). Kast från DECFLOAT för att DECIMAL runda halvvägs uppåt, oberoende av DECFLOAT_ROUNDING_MODE.
- Aritmetik bevarar precision när båda operanden har samma DECFLOAT-typ. Blandade precisioner eller operationer med andra stödda numeriska typer använder
DECFLOAT(34). -
SUMochAVGreturneraDECFLOAT(34).MINochMAXbevara inmatningsprecisionen. -
SQRT,ABS, ochROUNDacceptera DECFLOAT direkt.
DECFLOAT_ROUNDING_MODEkontrollerar avrundning för kast till DECFLOAT, , , , , , , SUMoch AVG. SQRT/*-+ Standardvärdet är ROUND_HALF_EVEN. Andra stödda lägen är ROUND_HALF_UP, ROUND_CEILING, , ROUND_FLOORoch ROUND_DOWN.
DIVtar bort den bråkdelade delen av resultatet, oavsett .DECFLOAT_ROUNDING_MODE
ROUND, BROUND, och TRUNCATE använder sina egna avrundningsregler.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Med standardavrundningsläget ger överflödet oändlighet och division med noll ger oändlighet eller NaN.
ANSI-läget ändrar inte dessa resultat. Stödda TRY_* aritmetiska funktioner bevarar oändligheten och NaN istället för att returnera NULL. NaN jämför lika och sorterar efter positiv oändlighet. Positiv och negativ noll jämför lika. Använd ISNAN för att upptäcka NaN.
Examples
> SELECT CAST('1.5' AS DECFLOAT(34)) + CAST('2.5' AS DECFLOAT(34)) AS total;
+40E-1
> SELECT CAST(CAST('1.23E+100' AS DECFLOAT(34)) AS STRING);
+123E+98
> SELECT typeof(CAST('1' AS DECFLOAT(16)) + 1);
decfloat(34)
Limitations
- Rest- och bitvisa operationer stöds inte.
- Funktioner som kräver
DOUBLEindata accepterar inte DECFLOAT direkt. Konvertera värdet tillDOUBLEförst (detta kan leda till precisionsförlust). - DECFLOAT är inte kompatibel med raderingsvektorer. När du skapar en deltatabell med DECFLOAT-kolumner, sätt
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). För befintliga tabeller, ta bort funktionen för raderingsvektortabell innan du lägger till DECFLOAT-kolumner. - Delta-tabeller som innehåller DECFLOAT kan inte ha Iceberg-läsningar aktiverade .
- Att skriva DECFLOAT-värden direkt till Parquet-filer stöds inte.
- DECFLOAT-kolumner har inga min/max-statistik för datahopp. De kan inte vara partitionskolumner, klustringsnycklar, Z-ordningskolumner eller Bloom-filterindexkolumner.
- Att byta kolumn mellan
DECFLOAT(16)ochDECFLOAT(34)medALTER COLUMNstöds inte.