Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Tipos de dados de número exato que usam dados inteiros. Para economizar espaço no banco de dados, use o menor tipo de dados que possa conter de forma confiável todos os valores possíveis. Por exemplo, tinyint seria suficiente para uma pequena tabela de pesquisa com valores de status, porque pode armazenar até 256 linhas. Mas tinyint não é suficiente para uma lista de funcionários, porque sua empresa pode ter centenas ou milhares de funcionários.
| Tipo de dados | Range | Expressão do intervalo | Armazenamento |
|---|---|---|---|
| bigint | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | -2^63 a 2^63-1 | 8 bytes |
| int | -2.147.483.648 a 2.147.483.647 | -2^31 a 2^31-1 | 4 bytes |
| smallint | -32.768 a 32.767 | -2^15 a 2^15-1 | 2 bytes |
| tinyint | 0 a 255 | 2^0-1 a 2^8-1 | 1 byte |
Remarks
O tipo de dados int é o tipo de dados inteiro primário no SQL Server. O tipo de dados bigint destina-se a ser usado quando os valores inteiros podem exceder o intervalo suportado pelo tipo de dados int .
BIGINT se encaixa entre SmallMoney e INT no gráfico de precedência de tipo de dados.
As funções retornam bigint somente se a expressão do parâmetro for um tipo de dados bigint . O SQL Server não promove automaticamente outros tipos de dados inteiros (tinyint, smallint e int) para bigint.
Conversão e parametrização
Quando você usa os +operadores , -, *, /, ou % aritmética para executar a conversão implícita ou explícita de valores constantes int, smallint, tinyint ou bigint para os tipos de dados float, real, decimal ou numérico, as regras que o SQL Server aplica quando calcula o tipo de dados e a precisão dos resultados da expressão diferem dependendo se a consulta é autoparametrizada ou não.
Portanto, expressões semelhantes em consultas às vezes podem produzir resultados diferentes. Quando uma consulta não é autoparametrizada, o valor constante é primeiro convertido em decimal, cuja precisão é grande o suficiente para manter o valor da constante, antes de converter para o tipo de dados especificado. Por exemplo, o valor 1 constante é convertido em decimal(1,0) e o valor 250 constante é convertido em decimal(3,0).
Quando uma consulta é autoparametrizada, o valor constante é sempre convertido em decimal(10,0) antes de converter para o tipo de dados final. Quando o operador / está envolvido, não só a precisão do tipo de resultado pode diferir entre consultas semelhantes, mas o valor do resultado também pode diferir. Por exemplo, o valor de resultado de uma consulta autoparametrizada que inclui a expressão SELECT CAST (1.0 / 7 AS float), difere do valor de resultado da mesma consulta que não é autoparametrizada, porque os resultados da consulta autoparametrizada são truncados para caber no tipo de dados decimal(10,0 ).
O tipo de dados tinyint não é suportado no Microsoft Fabric.
Converter dados inteiros
Quando inteiros são implicitamente convertidos em um tipo de dados de caractere, se o inteiro for muito grande para caber no campo de caracteres, o SQL Server usa o caractere ASCII 42, o asterisco (*).
Constantes inteiras maiores que 2.147.483.647 são convertidas para o tipo de dados decimal , não para o tipo de dados bigint . O exemplo a seguir mostra que, quando o valor limite é excedido, o tipo de dados do resultado muda de int paradecimal.
SELECT 2147483647 / 2 AS Result1,
2147483649 / 2 AS Result2;
Aqui está o conjunto de resultados.
Result1 Result2
----------- ------------------
1073741823 1073741824.500000
Examples
O exemplo a seguir cria uma tabela usando os tipos de dados bigint, int, smallint e tinyint . Os valores são inseridos em cada coluna e retornados SELECT na instrução.
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;
Aqui está o conjunto de resultados.
MyBigIntColumn MyIntColumn MySmallIntColumn MyTinyIntColumn
-------------------- ----------- ---------------- ---------------
9223372036854775807 2147483647 32767 255