

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Tipos numéricos
<a name="r_Numeric_types201"></a>

**Topics**
+ [Tipos de enteros](#r_Numeric_types201-integer-types)
+ [Tipo DECIMAL o NUMERIC](#r_Numeric_types201-decimal-or-numeric-type)
+ [Notas acerca del uso de las columnas DECIMAL o NUMERIC de 128 bits](#r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns)
+ [Tipos de números en coma flotante](#r_Numeric_types201-floating-point-types)
+ [Cómputos con valores numéricos](r_numeric_computations201.md)
+ [Literales enteros y con coma flotante](r_numeric_literals201.md)
+ [Ejemplos con tipos numéricos](r_Examples_with_numeric_types201.md)

Los tipos de datos numéricos incluyen enteros, decimales y números en coma flotante. 

## Tipos de enteros
<a name="r_Numeric_types201-integer-types"></a>

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. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Numeric_types201.html)

## Tipo DECIMAL o NUMERIC
<a name="r_Numeric_types201-decimal-or-numeric-type"></a>

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. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/redshift/latest/dg/r_Numeric_types201.html)

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 la cantidad 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 el valor a la columna (ni insertar ni actualizar). 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` a `999.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 `-9223372036854775808`. Por ejemplo, un intento de insertar el valor `9999999999999999999` (19 nueves) provocará un error de desbordamiento. Independientemente de la ubicación de la coma decimal, la cadena de mayor tamaño que Amazon Redshift 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 que los valores DECIMAL con 19 o menos dígitos significativos de precisión se almacenan internamente como números enteros de 8 bytes, mientras que los valores DECIMAL con una precisión de 20 a 38 dígitos significativos se almacenan como enteros de 16 bytes. 

## Notas acerca del uso de las columnas DECIMAL o NUMERIC de 128 bits
<a name="r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns"></a>

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
<a name="r_Numeric_types201-floating-point-types"></a>

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 para la aritmética binaria de coma flotante. Tiene una precisión de unos 6 dígitos y un intervalo de 1E-37 a 1E\$137 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\$1308 aproximadamente. También puede especificar este tipo de datos como FLOAT o FLOAT8.

Además de los valores numéricos normales, los tipos de punto flotante tienen varios valores especiales. Utilice estos valores entre comillas simples cuando los utilice en SQL:
+ `NaN`: no es un número
+ `Infinity`: infinito
+ `-Infinity`: infinito negativo

Por ejemplo, para insertar no es un número en la columna `day_charge` de la tabla `customer_activity`, ejecute el siguiente código SQL:

```
insert into customer_activity(day_charge) values('NaN');
```