DECIMAL fornece um numérico exato onde a precisão e a escala podem ter tamanhos arbitrários. Pode ser especificada a precisão (o número total de dígitos, tanto à esquerda quanto à direita do ponto decimal), e a escala (o número de dígitos da parte fracionária). A quantidade de armazenamento necessária é baseada na precisão.
{ DECIMAL | DEC } [(precisão [, escala ])]
A precisão deve estar entre 1 e 31. A escala deve ser menor ou igual a precisão.
Quando a escala não é especificada, é utilizado o valor padrão igual a 0. Quando a precisão não é especificada, é utilizada a precisão padrão igual a 5.
A tentativa de colocar um valor numérico em um DECIMAL é permitida, desde que a precisão não fracionária não seja perdida. Ao remover os dígitos finais do valor DECIMAL, o Derby arredonda para baixo.
-- esta conversão perde apenas a precisão fracionária VALUES CAST (1.798765 AS DECIMAL(5,2)); 1 -------- 1.79 -- esta conversão não cabe VALUES CAST (1798765 AS DECIMAL(5,2)); 1 -------- ERRO 22003: O valor resultante está fora da faixa para o tipo de dado DECIMAL/NUMERIC(5,2).
Quando misturado com outros tipos de dado nas expressões, o tipo de dado do resultado segue as regras mostradas em Promoção de tipo numérico nas expressões.
Consulte também Armazenamento de valores de um tipo de dado numérico em colunas de outro tipo de dado numérico.
Quando são misturados dois valores decimais em uma expressão, a escala e a precisão do valor resultante seguem as regras mostradas em Escala na aritmética decimal.
java.math.BigDecimal
DECIMAL
VALUES 123.456 VALUES 0.001
As constantes inteiras muito grandes para BIGINT são tornadas constantes DECIMAL.