DECFLOAT tür

Geçerlidir:işaretli evet, Databricks SQL işaretli evet, Databricks Runtime 19 ve üzeri

16 veya 34 anlamlı rakamlı ve sabit ölçek olmayan taban 10 kayan nokta sayılarını temsil eder.

Important

DECFLOAT Beta aşamasında. Bir çalışma alanı yöneticisi, ÖnizlemelerdeDECFLOAT veri tipini etkinleştirmelidir.

Sözdizimi

DECFLOAT [ ( p ) ]
  • p: Anlamlı ondalık rakamların maksimum sayısı. Desteklenen değerler 16 ve 34'tür. Varsayılan 34.

DECFLOAT ölçek argümanını kabul etmez. Her değerin kendi üsti vardır.

Limits

Property DECFLOAT(16) DECFLOAT(34)
Önemli rakamlar 16'ya kadar 34'e kadar
En küçük pozitif sıfır olmayan değer 1E-398 1E-6176
En büyük pozitif sonlu değer (10^16 - 1) × 10^369 (10^34 - 1) × 10^6111

Aynı sınırlar negatif sayılar için de geçerlidir. Her iki tip de infinity ve NaN'i destekliyor.

Literals

Bir diziyle veya desteklenen sayısal değerle kullanın CAST . Dizeler ayrıca NaN, Inf, veya Infinity. içerebilir.

Notes

DECFLOAT ondalık değerleri temsil eder, örneğin 0.1 tam olarak Hassasiyeti aşan değerler, hatasız olarak da yuvarlanabilir, dahil.TRY_CAST Ondalık metni doğrudan kullan. Dönüştürme veya FLOATDOUBLE hassasiyeti kaybedebilir.

Dizi çıkışı geride duran sıfırları korur, bu nedenle ve 1.50 gibi eşit değerler 1.5 farklı dizeler (+15E-1 ve +150E-2) üretebilir. DECFLOAT'tan DECIMAL yarısına yuvarlanan atışlar, bağımsız DECFLOAT_ROUNDING_MODEolarak .

  • Aritmetik, her iki operandın da aynı DECFLOAT tipine sahip olması durumunda hassasiyeti korur. Diğer desteklenen sayısal tiplerle DECFLOAT(34)karışık hassasiyetler veya işlemler kullanılır.
  • SUM ve AVG geri DECFLOAT(34)dön. MIN ve MAX giriş hassasiyetini koruyun.
  • SQRT, ABS, ve ROUND doğrudan DECFLOAT'ı kabul eder.

DECFLOAT_ROUNDING_MODEDECFLOAT, , , , , SQRT/, SUM, , ve AVGatışlar için yuvarlamayı kontrol eder. *-+ Varsayılan değer: ROUND_HALF_EVEN. Desteklenen diğer modlar ROUND_HALF_UPise , ROUND_CEILING, ROUND_FLOOR, ve ROUND_DOWN. DIV sonucun kesirlik kısmını çıkarır, ne olursa DECFLOAT_ROUNDING_MODEolsun. ROUND, BROUND, ve TRUNCATE kendi yuvarlama kurallarını kullanır.

> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
  ROUND_FLOOR

Varsayılan yuvarlama modunda, taşma sonsuzluk üretir ve sıfıra bölmek sonsuzluk veya NaN oluşturur. ANSI modu bu sonuçları değiştirmez. Desteklenen aritmetik fonksiyonlar, TRY_* sonsuzluğu ve NaN'i korur, geri dönmek NULLyerine . NaN, pozitif sonsuzluktan sonra eşit ve sıralanarak karşılaştırılır. Pozitif ve negatif sıfır eşittir. NaN'ı tespit etmek için kullanılır ISNAN .

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

  • Kalan ve bit bazında işlemler desteklenmez.
  • Girdi gerektiren DOUBLE fonksiyonlar DECFLOAT'u doğrudan kabul etmez. Değeri birinciye DOUBLE dönüştürün (bu hassasiyet kaybına yol açabilir).
  • DECFLOAT, silme vektörleriyle uyumlu değildir. DECFLOAT sütunlarıyla bir Delta tablosu oluştururken, TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Mevcut tablolar için, DECFLOAT sütunları eklemeden önce silinme vektör tablosu özelliğini kaldırın .
  • DECFLOAT içeren delta tablolarında Iceberg okumaları etkinleştirilemez.
  • DECFLOAT değerlerinin doğrudan Parquet dosyalarına yazılması desteklenmez.
  • DECFLOAT sütunlarında veri atlama için minimum/maksimum istatistikler yoktur. Bunlar bölüm sütunları, küme anahtarları, Z-sıra sütunları veya Bloom filtre indeks sütunları olamazlar.
  • Bir sütunu ile DECFLOAT(34)ALTER COLUMN arasında DECFLOAT(16) değiştirmek desteklenmez.