As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tipos numéricos
Tópicos
Os tipos de dados numéricos incluem números inteiros, decimais e números de ponto flutuante.
Tipos de inteiros
Use tipos de dados SMALLINT, INTEGER e BIGINT para armazenar números inteiros de vários intervalos. Não é possível armazenar valores fora do intervalo permitido para cada tipo.
Nome | Armazenamento | Intervalo |
---|---|---|
SMALLINT | 2 bytes | -32768 a +32767 |
INTEGER ou INT | 4 bytes | -2147483648 a +2147483647 |
BIGINT | 8 bytes | -9223372036854775808 a 9223372036854775807 |
Tipo DECIMAL ou NUMERIC
Use o tipo de dados DECIMAL ou NUMERIC para armazenar valores com uma precisão definida pelo usuário. As palavras-chave DECIMAL e NUMERIC são intercambiáveis. Neste documento, decimal é o termo preferido para esse tipo de dados. O termo numeric é usado genericamente para se referir aos tipos de dados de número inteiro, decimal e de ponto flutuante.
Armazenamento | Intervalo |
---|---|
Variável, até 128 bits para tipos DECIMAL não compactados. | Números inteiros assinados de 128 bits com até 38 dígitos de precisão. |
Define uma coluna DECIMAL em uma tabela especificando uma precisão
e escala
:
decimal(
precision
,scale
)
-
precisão
-
O número total de dígitos significativos no valor inteiro: o número de dígitos em ambos os lados do ponto decimal. Por exemplo, o número
48.2891
tem precisão de 6 e uma escala de 4. A precisão padrão, quando não especificada, é 18. A precisão máxima é 38.Se o número de dígitos à esquerda da vírgula decimal em um valor de entrada exceder a precisão da coluna menos sua escala, o valor não poderá ser copiado na coluna (ou inserido ou atualizado). Esta regra aplica-se a qualquer valor que caia fora do intervalo de definição da coluna. Por exemplo, o intervalo permitido de valores para uma coluna
numeric(5,2)
é-999.99
a999.99
. -
escala
-
O número de dígitos decimais na parte fracionada do valor, à direita do ponto decimal. Números inteiros têm uma escala de zero. Em uma especificação de coluna, o valor de escala deve ser menor ou igual ao valor de precisão. A escala padrão, quando não especificada, é 0. A escala máxima é 37.
Se a escala de um valor de entrada carregado em uma tabela for maior do que a escala da coluna, o valor será arredondado para a escala especificada. Por exemplo, a coluna PRICEPAID na tabela SALES é uma coluna DECIMAL(8,2). Se um valor DECIMAL(8,4) é inserido na coluna PRICEPAID, o valor é arredondado para uma escala de 2.
insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)
Contudo, os resultados de conversões explícitas dos valores selecionados a partir de tabelas não são arredondados.
nota
O valor positivo máximo que você pode inserir na coluna DECIMAL(19,0) é 9223372036854775807
(263 -1). O valor negativo máximo é -9223372036854775807
. Por exemplo, uma tentativa de inserir o valor 9999999999999999999
(19 noves) causará um erro de transbordamento. Independentemente do posicionamento do ponto decimal, a maior string que o AWS Clean Rooms pode representar como um número DECIMAL é 9223372036854775807
. Por exemplo, o maior valor que você pode carregar em uma coluna DECIMAL(19,18) é 9.223372036854775807
.
Essas regras ocorrem por causa do seguinte:
-
Valores DECIMAL com 19 ou menos dígitos significativos de precisão de precisão significativos de precisão de precisão de precisão significativos de precisão de 8 bytes de precisão.
-
Valores DECIMAL com 20 a 38 dígitos significativos de precisão de precisão de precisão de precisão são armazenados como valores inteiros de 16 bytes.
Observações sobre o uso de colunas do tipo DECIMAL ou NUMERIC de 128 bits
Não designe arbitrariamente a precisão máxima às colunas do tipo DECIMAL, a não ser que você esteja certo de que sua aplicação requer essa precisão. Valores de 128 bits usam duas vezes mais espaço em disco do que valores de 64 bits e podem retardar o tempo de execução da consulta.
Tipos de ponto flutuante
Use os tipos de dados REAL e DOUBLE PRECISION para armazenar valores numéricos com precisão variável. Esses tipos são inexatos, o que significa que alguns valores são armazenados como aproximações, de tal forma que o armazenamento e retorno de um valor específico pode resultar em ligeiras discrepâncias. Se você precisar de armazenamento e cálculos precisos (como para quantidades monetárias), use o tipo de dados DECIMAL.
REAL representa o formato de ponto flutuante de precisão simples, de acordo com o padrão IEEE 754 para aritmética de ponto flutuante. Tem uma precisão de cerca de 6 dígitos e um intervalo de cerca de 1E-37 a 1E+37. Você também pode especificar esse tipo de dado como FLOAT4.
DOUBLE PRECISION representa o formato de ponto flutuante de precisão dupla, de acordo com o padrão 754 do IEEE para aritmética de ponto flutuante binário. Tem uma precisão de cerca de 15 dígitos e um intervalo de cerca de 1E-307 a 1E+308. Você também pode especificar esse tipo de dado como FLOAT ou FLOAT8.