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

Tipos de dados numéricos exatos que usam dados inteiros.

Tipo de dados

Intervalo

Armazenamento

bigint

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

8 bytes

int

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

4 bytes

smallint

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

2 bytes

tinyint

0 a 255

1 byte

Comentários

O tipo de dados int é o tipo de dados inteiro principal do SQL Server. O tipo de dados bigint deve ser usado quando valores inteiros possam exceder o intervalo ao qual tipo de dados int oferece suporte.

bigint está 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 de um tipo de dados bigint. O SQL Server não promove automaticamente outros tipos de dados inteiros (tinyint, smallint e int) para bigint.

Observação sobre cuidadosCuidado

Ao usar os operadores aritméticos +, -, *, / ou % para executar a conversão implícita ou explícita de valores constantes int, smallint, tinyint ou bigint nos tipos de dados float, real, decimal ou numeric, as regras que o SQL Server aplica ao calcular o tipo de dados e a precisão dos resultados da expressão diferem, dependendo do fato de a consulta ser ou não automaticamente parametrizada.

Portanto, as expressões semelhantes em consultas podem, às vezes, produzir resultados diferentes. Quando uma consulta não for automaticamente parametrizada, o valor constante será primeiramente convertido em numeric, cuja precisão é apenas grande o bastante para conter o valor da constante, antes de converter no tipo de dados especificado. Por exemplo, o valor constante 1 é convertido em numeric (1, 0) e o valor constante 250 é convertido em numeric (3, 0).

Quando uma consulta for automaticamente parametrizada, o valor constante sempre será convertido em numeric (10, 0) antes da conversão no tipo de dados final. Quando o operador / estiver envolvido, não apenas a precisão do tipo do resultado pode diferir entre consultas semelhantes, mas também o valor do resultado. Por exemplo, o valor do resultado de uma consulta automaticamente parametrizada que inclua a expressão SELECT CAST (1.0 / 7 AS float) diferirá do valor do resultado da mesma consulta que não é automaticamente parametrizada, porque os resultados da primeira serão truncados para que caibam no tipo de dados numeric (10, 0). Para obter mais informações sobre consultas parametrizadas, consulte Parametrização simples.