# Armazenamento de valores de um tipo de dado numérico em colunas de outro tipo de dado numérico

A tentativa de colocar um tipo de ponto flutuante com tamanho de armazenamento maior em um local com tamanho de armazenamento menor falha apenas se o valor não puder ser armazenado no local com tamanho menor. Por exemplo:

    CREATE TABLE MINHA_TABELA (R REAL, D DOUBLE PRECISION);
    0 rows inserted/updated/deleted
    INSERT INTO MINHA_TABELA (R, D) VALUES (3.4028236E38, 3.4028235E38);
    ERRO X0X41: O número '3.4028236E38' está fora da faixa para o tipo de dado REAL.

Pode ser armazenado um tipo de ponto flutuante em uma coluna INTEGER; a parte fracionária do número é truncada. Por exemplo:

    INSERT INTO MINHA_TABELA(COLUNA_INTEIRA) VALUES (1.09e0);
    1 row inserted/updated/deleted
    SELECT coluna_inteira
    FROM MINHA_TABELA;
    I
    ---------------
    1

Os tipos inteiros sempre podem ser colocados com sucesso em valores numéricos aproximados, embora com uma possível perda de precisão.

Os inteiros podem ser armazenados em decimais, se a precisão do DECIMAL for grande o suficiente para o valor. Por exemplo:

    ij> INSERT INTO MINHA_TABELA (COLUNA_DECIMAL)
    VALUES (55555555556666666666);
    ERRO X0Y21: O número '55555555556666666666' está fora da faixa do tipo de dado
    de destino DECIMAL/NUMERIC(5,2).

A tentativa de colocar um valor inteiro com tamanho de armazenamento maior em um local com tamanho de armazenamento menor falha apenas se o valor não puder ser armazenado no local com tamanho menor. Por exemplo:

    INSERT INTO MINHA_TABELA (COLUNA_INTEIRA) VALUES 2147483648;
    ERRO 22003: O valor resultante está fora da faixa para o tipo de dado INTEGER.

Nota: Ao truncar os dígitos no final do valor NUMERIC, o Derby arredonda para baixo.
Tópico pai: Tipos numéricos
Conceitos relacionados
Visão geral dos tipos numéricos
Referências relacionadas
Promoção de tipo numérico nas expressões
Escala na aritmética decimal