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

Mis à jour : 14 avril 2006

Types de données représentant des valeurs numériques exactes qui utilisent des entiers.

Type de données Plage Stockage

bigint

De -2^63 (-9 223 372 036 854 775 808) à 2^63-1 (9 223 372 036 854 775 807)

Huit octets

int

De -2^31 (-2 147 483 648) à 2^31-1 (2 147 483 647)

Quatre octets

smallint

De -2^15 (-32 768) à 2^15-1 (32 767)

Deux octets

tinyint

De 0 à 255

Un octet

Le type de données int est le type de données integer principal dans SQL Server 2005. Le type de données bigint est destiné à être utilisé lorsque les valeurs entières sont susceptibles de ne pas appartenir à la plage prise en charge par le type de données int.

bigint s'insère entre smallmoney et int dans l'organigramme de priorité des types de données.

Les fonctions retournent bigint uniquement si l'expression de paramètre est un type de données bigint. SQL Server ne promeut pas automatiquement vers bigint les autres données de type entier (tinyint, smallint et int).

ms187745.Caution(fr-fr,SQL.90).gifAttention :
Lorsque vous utilisez les opérateurs arithmétiques +, -, *, / ou % pour réaliser une conversion implicite ou explicite de valeurs de constante int, smallint, tinyint ou bigint en types de données float, real, decimal ou numeric, les règles appliquées par SQL Server pour calculer le type de données et la précision des résultats des expressions varient selon que la requête est automatiquement paramétrée ou non.

Par conséquent, des expressions similaires dans les requêtes peuvent parfois produire des résultats différents. Lorsqu'une requête n'est pas automatiquement paramétrée, la valeur constante est d'abord convertie en type de données numeric, dont la précision est juste suffisante pour contenir la valeur de la constante, avant la conversion dans le type de données spécifié. Par exemple, la valeur constante 1 est convertie en numeric (1, 0) et la valeur constante 250 est convertie en numeric (3, 0).

Lorsqu'une requête est automatiquement paramétrée, la valeur constante est toujours convertie en numeric (10, 0) avant la conversion dans le type de données final. Lorsque l'opérateur / est impliqué, outre la précision du type de résultat, la valeur de résultat peut aussi différer parmi des requêtes similaires. Par exemple, la valeur de résultat d'une requête automatiquement paramétrée qui comprend l'expression SELECT CAST (1.0 / 7 AS float) diffère de la valeur de résultat de la même requête qui n'est pas automatiquement paramétrée, car le résultat de la requête automatiquement paramétrée est tronqué afin qu'il puisse contenir dans le type de données numeric (10, 0). Pour plus d'informations sur les requêtes paramétrées, consultez Paramétrage simple.

Version Historique

14 avril 2006

Contenu modifié :
  • Modification du troisième paragraphe de mise en garde, qui commence désormais par « Lorsqu'une requête est automatiquement paramétrée... ». Dans les versions antérieures, ce paragraphe commençait par « Lorsqu'une requête n'est pas automatiquement paramétrée... ».

Ajouts de la communauté

AJOUTER
Afficher: