Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
Tipos de datos numéricos exactos que utilizan datos enteros. Para ahorrar espacio en la base de datos, use el tipo de datos más pequeño que puede contener todos los valores posibles de manera confiable. Por ejemplo, tinyint sería suficiente para una pequeña tabla de búsqueda con valores de estado, ya que puede almacenar hasta 256 filas. Pero tinyint no es suficiente para una lista de empleados, ya que su empresa podría tener cientos o miles de empleados.
| Tipo de dato | Range | Expresión de rango | Storage |
|---|---|---|---|
| bigint | De -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | -2^63 a 2^63-1 | 8 bytes |
| int | De -2.147.483.648 a 2.147.483.647 | -2^31 a 2^31-1 | 4 bytes |
| smallint | De -32 768 a 32 767 | -2^15 a 2^15-1 | 2 bytes |
| tinyint | De 0 a 255 | 2^0-1 a 2^8-1 | 1 byte |
Remarks
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 usarse cuando los valores enteros pueden exceder el intervalo admitido por el tipo de datos int.
bigint se encuentra entre smallmoney y int en el gráfico de prioridad de tipo de datos.
Las funciones solo devuelven bigint si la expresión de parámetro es un tipo de datos bigint. SQL Server no promueve automáticamente otros tipos de datos enteros (tinyint, smallint e int) a bigint.
Conversión y parametrización
Cuando se usan los +operadores aritméticos , -, */, o % para realizar la conversión implícita o explícita de valores constantes int, smallint, tinyint o bigint en los tipos de datos float, real, decimal o numérico, las reglas que SQL Server aplica cuando calcula el tipo de datos y la precisión de los resultados de la expresión difieren en función de si la consulta está autoparámetizada o no.
Por lo tanto, expresiones similares en las consultas pueden generar resultados diferentes. Cuando una consulta no está autoparametrizada, el valor constante se convierte primero en decimal, cuya precisión es lo suficientemente grande como para contener el valor de la constante, antes de convertir al tipo de datos especificado. Por ejemplo, el valor 1 constante se convierte en decimal(1,0) y el valor 250 constante se convierte en decimal(3,0).
Cuando una consulta se realiza automáticamente, el valor constante siempre se convierte en decimal(10,0) antes de convertir al tipo de datos final. Cuando se utiliza el operador /, no solo 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 resultado de una consulta autoparámetrizada que incluye la expresión SELECT CAST (1.0 / 7 AS float), difiere del valor de resultado de la misma consulta que no está autoparametrizada, ya que los resultados de la consulta autoparámetrizada se truncan para caber en el tipo de datos decimal(10,0).
El tipo de datos tinyint no se admite en Microsoft Fabric.
Convertir datos enteros
Cuando los enteros se convierten implícitamente en un tipo de datos de caracteres, si el entero es demasiado grande para caber en el campo de caracteres, SQL Server usa el carácter ASCII 42, el asterisco (*).
Las constantes de enteros mayores que 2.147.483.647 se convierten en el tipo de datos decimal, no en el tipo de datos bigint. En el siguiente ejemplo se muestra que, cuando se supera el valor de umbral, el tipo de datos del resultado cambia de int a decimal.
SELECT 2147483647 / 2 AS Result1,
2147483649 / 2 AS Result2;
Este es el conjunto de resultados.
Result1 Result2
----------- ------------------
1073741823 1073741824.500000
Examples
En el ejemplo siguiente se crea una tabla con los tipos de datos bigint, int, smallint y tinyint. Los valores se insertan en cada columna y se devuelven en la SELECT instrucción .
CREATE TABLE dbo.MyTable
(
MyBigIntColumn BIGINT,
MyIntColumn INT,
MySmallIntColumn SMALLINT,
MyTinyIntColumn TINYINT
);
GO
INSERT INTO dbo.MyTable
VALUES (9223372036854775807, 2147483647, 32767, 255);
GO
SELECT MyBigIntColumn,
MyIntColumn,
MySmallIntColumn,
MyTinyIntColumn
FROM dbo.MyTable;
Este es el conjunto de resultados.
MyBigIntColumn MyIntColumn MySmallIntColumn MyTinyIntColumn
-------------------- ----------- ---------------- ---------------
9223372036854775807 2147483647 32767 255