DECFLOAT soort

Van toepassing op:vinkje gemarkeerd ja Databricks SQL vinkje gemarkeerd ja 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).
  • SUMen AVG terug .DECFLOAT(34) MIN en MAX behoud de invoerprecisie.
  • SQRT, ABS, en ROUND accepteer 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 naar DOUBLE de 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) en DECFLOAT(34) met ALTER COLUMN wordt niet ondersteund.