Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
тип
Применимо к:
» Databricks SQL
» Databricks Runtime 19 и выше
Представляет числа с плавающей запятой с 16 или 34 значительными цифрами и без фиксированной шкалы.
Important
DECFLOAT находится в бета-версии. Администратор рабочего пространства должен включить тип данных DECFLOAT в предварительном просмотре.
Syntax
DECFLOAT [ ( p ) ]
-
p: Максимальное количество значимых десятичных цифр. Поддерживаемые значения — 16 и 34. По умолчанию — 34.
DECFLOAT не принимает аргумент о масштабе. Каждое значение имеет свой показатель.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Значимые цифры | До 16 | До 34 |
| Наименьшее положительное ненулевой значение | 1E-398 |
1E-6176 |
| Наибольшее положительное конечное значение | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Те же ограничения применимы и к отрицательным числам. Оба типа также поддерживают бесконечность и NaN.
Literals
Используйте CAST со строкой или поддерживаемым числовым значением. Строки также могут содержать NaN, Inf, или Infinity.
Notes
DECFLOAT представляет собой десятичные значения, такие как 0.1 точно. Значения, превышающие точность, могут округлять без ошибки, включая с TRY_CAST. Накладывайте десятичный текст напрямую. Преобразование может FLOAT потерять точность DOUBLE или преобразование.
Выход строк сохраняет задерживающиеся нули, поэтому равные значения, такие как 1.5 и 1.50 , могут создавать разные строки (+15E-1 и +150E-2). Заклинания из DECFLOAT для DECIMAL округления половины вверх, независимо от DECFLOAT_ROUNDING_MODE.
- Арифметика сохраняет точность, когда оба операнда имеют одинаковый тип DECFLOAT. Смешанные точности или операции с другими поддерживаемыми числовыми типами используют
DECFLOAT(34). -
SUMиAVGвернутьсяDECFLOAT(34).MINиMAXсохранять точность ввода. -
SQRT,ABS, иROUNDпринимать DECFLOAT напрямую.
DECFLOAT_ROUNDING_MODEуправляет округлением для заклинаний в DECFLOAT, +, -, */, SUMSQRT, , и AVG. Значение по умолчанию — ROUND_HALF_EVEN. Другие поддерживаемые режимы — ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, и ROUND_DOWN.
DIV удаляет дробную часть результата, независимо от DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, и TRUNCATE используют свои собственные правила округления.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
В режиме округления по умолчанию переполнение даёт бесконечность, а деление на ноль — бесконечность или NaN.
Режим ANSI не меняет этих результатов. Поддерживаемые TRY_* арифметические функции сохраняют бесконечность и NaN, а не возвращают NULL. NaN сравнивают равные и сортируют после положительной бесконечности. Положительный и отрицательный ноль равны. Используется ISNAN для обнаружения 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
- Операции с оставшимися и побитовыми операциями не поддерживаются.
- Функции, требующие
DOUBLEвходных данных, не принимают DECFLOAT напрямую. Преобразуйте значение вDOUBLEпервую (это может привести к потере точности). - DECFLOAT несовместим с векторами удаления. При создании таблицы Delta с столбцами DECFLOAT установите
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Для существующих таблиц отключите функцию таблицы с вектором удаления перед добавлением столбцов DECFLOAT. - Таблицы дельта, содержащие DECFLOAT, не могут иметь включённые чтения Iceberg .
- Запись значений DECFLOAT напрямую в файлы Parquet не поддерживается.
- Столбцы DECFLOAT не имеют статистики min/max для пропуска данных. Они не могут быть столбцами разделов, ключами кластеризации, столбцами порядка Z или индексными столбцами фильтра Bloom.
- Изменение столбца между
DECFLOAT(16)иDECFLOAT(34)сALTER COLUMNне поддерживается.
Related
- Типы данных
- типа
DECIMAL - типа
DOUBLE -
castфункция -
try_castфункция