Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tipos numéricos
Temas
Los tipos de datos numéricos incluyen enteros, decimales y números en coma flotante.
Tipos de enteros
Use los tipos de datos SMALLINT, INTEGER y BIGINT para almacenar los números completos de varios rangos. No puede almacenar valores fuera del rango permitido para cada tipo.
Nombre | Almacenamiento | Range |
---|---|---|
SMALLINT | 2 bytes | De -32768 a +32767 |
INTEGER o INT | 4 bytes | De -2147483648 a 2147483647 |
BIGINT | 8 bytes | De -9223372036854775808 a 9223372036854775807 |
Tipo DECIMAL o NUMERIC
Use el tipo de datos DECIMAL o NUMERIC para almacenar valores con una precisión definida por el usuario. Las palabras clave DECIMAL y NUMERIC son intercambiables. En este documento, decimal es el término preferido para este tipo de datos. El término numérico se utiliza genéricamente para referirse a tipos de datos enteros, decimales y con coma flotante.
Almacenamiento | Range |
---|---|
Variable, hasta 128 bits para tipos DECIMAL sin comprimir. | Los enteros firmados de 128 bits con hasta 38 dígitos de precisión. |
Defina una columna DECIMAL en una tabla especificando una precisión
y una escala
:
decimal(
precision
,scale
)
-
precisión
-
El número total de dígitos significativos en todo el valor: la cantidad de dígitos de ambos lados del punto decimal. Por ejemplo, el número
48.2891
tiene una precisión de 6 y una escala de 4. La precisión predeterminada es 18, si no se especifica. La precisión máxima es 38.Si el número de dígitos a la izquierda del punto decimal en un valor de entrada supera la precisión de la columna menos su escala, no se puede copiar (ni insertar ni actualizar) el valor en la columna. Esta regla se aplica a cualquier valor que caiga fuera del rango de la definición de la columna. Por ejemplo, el rango permitido de valores para una columna
numeric(5,2)
es de-999.99
a999.99
. -
scale
-
El número de dígitos decimales en la parte fraccional del valor, a la derecha del punto decimal. Los enteros tienen una escala de cero. En la especificación de una columna, el valor de la escala debe ser inferior que o igual al valor de precisión. La escala predeterminada es 0, si no se especifica. La escala máxima es 37.
Si la escala de un valor de entrada que se carga en una tabla es mayor que la escala de la columna, el valor se redondea a la escala especificada. Por ejemplo, la columna PRICEPAID de la tabla SALES es una columna DECIMAL(8,2). Si se inserta un valor DECIMAL(8,4) en la columna PRICEPAID, el valor se redondea a una 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)
Sin embargo, no se redondean los resultados de formas explícitas de los valores seleccionados de tablas.
nota
El valor positivo máximo que puede insertar en una columna DECIMAL(19,0) es 9223372036854775807
(263 -1). El valor negativo máximo es -9223372036854775807
. Por ejemplo, un intento de insertar el valor 9999999999999999999
(19 nueves) provocará un error de desbordamiento. Independientemente de la ubicación del punto decimal, la cadena de mayor tamaño que AWS Clean Rooms puede representar como un número DECIMAL es 9223372036854775807
. Por ejemplo, el valor más grande que puede cargar en una columna DECIMAL(19,18) es 9.223372036854775807
.
Estas reglas se deben a los motivos siguientes:
-
Los valores DECIMAL con 19 dígitos de precisión significativos o menos se almacenan internamente como enteros de 8 bytes.
-
Los valores DECIMAL con entre 20 y 38 dígitos de precisión significativos se almacenan como enteros de 16 bytes.
Notas acerca del uso de las columnas DECIMAL o NUMERIC de 128 bits
No asigne arbitrariamente la precisión máxima de las columnas DECIMAL a menos que esté seguro de que la aplicación requiere esa precisión. Los valores de 128 bits utilizan el doble de espacio en el disco en comparación de los valores de 64 bits y pueden alargar el tiempo de ejecución de la consulta.
Tipos de números en coma flotante
Use el tipo de datos REAL o DOUBLE PRECISION para almacenar valores numéricos con precisión variable. Estos tipos son inexactos, lo que significa que algunos valores se almacenan como aproximaciones, por lo que puede haber pequeñas discrepancias al almacenar y devolver un valor específico. Si requiere almacenamiento y cálculos exactos (como para importes monetarios), use el tipo de datos DECIMAL.
REAL representa el formato de coma flotante de precisión simple, según la norma IEEE 754 de aritmética de coma flotante. Tiene una precisión de unos 6 dígitos y un intervalo de 1E-37 a 1E+37 aproximadamente. También puede especificar este tipo de datos como FLOAT4.
DOUBLE PRECISION representa el formato de coma flotante de doble precisión, según la norma IEEE 754 para la aritmética binaria de coma flotante. Tiene una precisión de unos 15 dígitos y un intervalo de 1E-307 a 1E+308 aproximadamente. También puede especificar este tipo de datos como FLOAT o FLOAT8.