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.

Ao truncar os dígitos no final do valor NUMERIC, o arredonda para baixo.