Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Tipo
Aplica-se a:
Databricks SQL
Databricks Runtime 19 e superiores
Representa números de ponto flutuante em base 10 com 16 ou 34 dígitos significativos e sem escala fixa.
Important
DECFLOAT está em Beta. Um administrador de espaço de trabalho deve ativar o tipo de dado DECFLOAT em Pré-visualizações.
Sintaxe
DECFLOAT [ ( p ) ]
-
p: O número máximo de dígitos decimais significativos. Os valores suportados são 16 e 34. O padrão é 34.
DECFLOAT não aceita um argumento de escala. Cada valor tem o seu próprio expoente.
Limits
| Property | DECFLOAT(16) |
DECFLOAT(34) |
|---|---|---|
| Dígitos significativos | Até aos 16 | Até 34 |
| Menor valor positivo não nulo | 1E-398 |
1E-6176 |
| Maior valor positivo finito | (10^16 - 1) × 10^369 |
(10^34 - 1) × 10^6111 |
Os mesmos limites aplicam-se aos números negativos. Ambos os tipos também suportam infinito e NaN.
Literals
CAST Use com uma cadeia de caracteres ou valor numérico suportado. As cadeias também podem conter NaN, Inf, ou Infinity.
Notes
DECFLOAT representa valores decimais, como 0.1 exatamente. Valores que excedam a precisão podem arredondar sem erro, incluindo com TRY_CAST. Lança texto decimal diretamente. Converter através FLOAT ou DOUBLE pode perder precisão.
A saída de cadeias preserva os zeros seguintes, por isso valores iguais como 1.5 e 1.50 podem produzir cadeias diferentes (+15E-1 e +150E-2). Lança de DECFLOAT para DECIMAL arredondar metade para cima, independentemente de DECFLOAT_ROUNDING_MODE.
- A aritmética preserva a precisão quando ambos os operandos têm o mesmo tipo DECFLOAT. Precisões ou operações mistas com outros tipos numéricos suportados utilizam
DECFLOAT(34). -
SUMeAVGregressarDECFLOAT(34).MINeMAXpreservar a precisão da entrada. -
SQRT,ABS, eROUNDaceitar diretamente o DECFLOAT.
DECFLOAT_ROUNDING_MODE arredondamento de controlos para lançamentos para DECFLOAT, +, -, *, /, SQRT, SUM, , e AVG. A predefinição é ROUND_HALF_EVEN. Outros modos suportados são ROUND_HALF_UP, ROUND_CEILING, ROUND_FLOOR, e ROUND_DOWN.
DIV remove a parte fracionária do resultado, independentemente de DECFLOAT_ROUNDING_MODE.
ROUND, BROUND, e TRUNCATE usam as suas próprias regras de arredondamento.
> SET DECFLOAT_ROUNDING_MODE = ROUND_FLOOR;
> SELECT CURRENT_DECFLOAT_ROUNDING_MODE();
ROUND_FLOOR
Com o modo de arredondamento padrão, o overflow produz infinito e a divisão por zero produz infinito ou NaN.
O modo ANSI não altera estes resultados. As funções aritméticas suportadas TRY_* preservam o infinito e o NaN em vez de devolver NULL. Os NaNs comparam iguais e ordenam após o infinito positivo. Positivo e negativo zero comparam-se. Usado ISNAN para detetar 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
- As operações de remanescente e bit a bit não são suportadas.
- As funções que requerem
DOUBLEentradas não aceitam diretamente o DECFLOAT. Converta o valor paraDOUBLEo primeiro (isto pode resultar em perda de precisão). - O DECFLOAT não é compatível com vetores de deleção. Ao criar uma tabela Delta com colunas DECFLOAT, defina
TBLPROPERTIES ('delta.enableDeletionVectors' = 'false'). Para tabelas existentes, elimine a característica de tabela de vetor de exclusão antes de adicionar colunas DECFLOAT. - Tabelas Delta contendo DECFLOAT não podem ter leituras Iceberg ativadas.
- Escrever valores DECFLOAT diretamente em ficheiros Parquet não é suportado.
- As colunas DECFLOAT não têm estatísticas min/max para saltar dados. Não podem ser colunas de partição, chaves de agrupamento, colunas de ordem Z ou colunas de índice de filtro de Bloom.
- Alterar uma coluna entre
DECFLOAT(16)eDECFLOAT(34)comALTER COLUMNnão é suportado.