Compartir a través de


int, bigint, smallint y tinyint (Transact-SQL)

Tipos de datos numéricos exactos que utilizan datos enteros.

Tipo de datos

Intervalo

Almacenamiento

bigint

De -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807)

8 bytes

int

De -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647)

4 bytes

smallint

De -2^15 (-32.768) a 2^15-1 (32.767)

2 bytes

tinyint

De 0 a 255

1 byte

Notas

El tipo de datos int es el principal tipo de datos de valores enteros de SQL Server. El tipo de datos bigint está pensado para utilizarse cuando los valores enteros pueden exceder el intervalo admitido por el tipo de datos int.

bigint se encuentra entre smallmoney e int en el gráfico de prioridad de tipo de datos.

Las funciones sólo devuelven bigint si la expresión de parámetro es un tipo de datos bigint. SQL Server no convierte automáticamente otros tipos de datos enteros (tinyint, smallint e int) en bigint.

Nota de advertenciaAdvertencia

Cuando se utilizan los operadores aritméticos +, -, *, / o % para llevar a cabo conversiones implícitas o explícitas de valores constantes int, smallint, tinyint o bigint en tipos de datos float, real, decimal o numeric, las reglas que aplica SQL Server al calcular el tipo de datos y la precisión de los resultados de la expresión varían dependiendo de si la consulta tiene parámetros automáticos o no.

Por lo tanto, expresiones similares en las consultas pueden generar resultados diferentes. Cuando una consulta no tiene parámetros automáticos, el valor constante primero se convierte en numeric, cuya precisión es lo suficientemente grande como para conservar el valor de la constante, antes de realizar la conversión al tipo de datos especificado. Por ejemplo, el valor constante 1 se convierte en numeric (1, 0) y el valor constante 250 se convierte en numeric (3, 0).

Cuando una consulta tiene parámetros automáticos, el valor constante siempre se convierte en numeric (10, 0) antes de convertirse en el tipo de datos final. Cuando se utiliza el operador /, no sólo puede diferir la precisión del tipo de los resultados entre consultas similares, sino que también puede variar el valor de los resultados. Por ejemplo, el valor de los resultados de una consulta con parámetros automáticos que incluye la expresión SELECT CAST (1.0 / 7 AS float) variará con respecto a la misma consulta cuando no tenga parámetros automáticos, puesto que los resultados de la primera se truncarán para ajustarse al tipo de datos numeric (10, 0). Para obtener más información acerca de las consultas con parámetros, vea Parametrización simple.