Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime 19 en hoger
Geeft basis 10 floating-point getallen voor met 16 of 34 significante cijfers en geen vaste schaal.
Important
DECFLOAT is in bèta. Een werkruimtebeheerder moet het datatype DECFLOAT inschakelen in Previews.
Syntaxis
DECFLOAT [ ( p ) ]
-
p: Het maximale aantal significante decimale cijfers. Ondersteunde waarden zijn 16 en 34. De standaard is 34.
DECFLOAT accepteert geen schaalargument. Elke waarde heeft zijn eigen exponent.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Significante cijfers | Tot 16 | Tot 34 |
| Kleinste positieve niet-nul waarde | 1E-398 |
1E-6176 |
| Grootste positieve eindige waarde | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Dezelfde limieten gelden voor negatieve getallen. Beide types ondersteunen ook infinity en NaN.
Literals
Gebruik CAST met een string of ondersteunde numerieke waarde. Strings kunnen ook , Inf, of InfinitybevattenNaN.
Notes
DECFLOAT vertegenwoordigt decimale waarden zoals 0.1 exact. Waarden die de precisie overschrijden, kunnen zonder fout afronden, inclusief met TRY_CAST. Spreek decimale tekst direct uit. Omzetten door FLOAT of DOUBLE kan precisie verliezen.
String-uitvoer behoudt achterliggende nullen, dus gelijke waarden zoals 1.5 en 1.50 kunnen verschillende strings (+15E-1 en +150E-2) opleveren. Werpen van DECFLOAT om DECIMAL halverwege af te ronden, onafhankelijk van DECFLOAT_ROUNDING_MODE.
- Rekenkunde behoudt precisie wanneer beide operanden hetzelfde DECFLOAT-type hebben. Gemengde precisies of bewerkingen met andere ondersteunde numerieke types gebruiken
DECFLOAT(34). -
SUMenAVGterug .DECFLOAT(34)MINenMAXbehoud de invoerprecisie. -
SQRT,ABS, enROUNDaccepteer DECFLOAT direct.
DECFLOAT_ROUNDING_MODEcontroleert afronding voor werpen naar DECFLOAT, +, , *-, /, SQRT, , SUM, en AVG. De standaardwaarde is ROUND_HALF_EVEN. Andere ondersteunde modi zijn ROUND_HALF_UP, ROUND_CEILING, , ROUND_FLOORen ROUND_DOWN.
DIV verwijdert het fractiedeel van het resultaat, ongeacht DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, en TRUNCATE gebruiken hun eigen afrondingsregels.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Met de standaard afrondingsmodus produceert overflow oneindig en delen door nul levert oneindig of NaN op.
ANSI-modus verandert deze resultaten niet. Ondersteunde TRY_* rekenkundige functies behouden oneindig en NaN in plaats van terug te geven NULL. NaNs vergelijken gelijk en sorteren na positieve oneindigheid. Positief en nul vergelijken gelijk. Gebruik ISNAN om NaN te detecteren.
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- en bitwise-operaties worden niet ondersteund.
- Functies die invoer vereisen
DOUBLE, accepteren DECFLOAT niet direct. Zet de waarde om naarDOUBLEde eerste (dit kan resulteren in precisieverlies). - DECFLOAT is niet compatibel met deletievectoren. Wanneer je een Delta-tabel met DECFLOAT-kolommen maakt, stel
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false')je . Voor bestaande tabellen laat je de deletion-vector-table-functie weg voordat je DECFLOAT-kolommen toevoegt. - Delta-tabellen met DECFLOAT kunnen geen Iceberg-reads ingeschakeld hebben.
- Het direct schrijven van DECFLOAT-waarden naar Parquet-bestanden wordt niet ondersteund.
- DECFLOAT-kolommen hebben geen min/max-statistieken voor data-skipping. Ze kunnen geen partitiekolommen, clusteringsleutels, Z-orde kolommen of Bloom-filterindexkolommen zijn.
- Het wijzigen van een kolom tussen
DECFLOAT(16)enDECFLOAT(34)metALTER COLUMNwordt niet ondersteund.