TechNet
Exporter (0) Imprimer
Développer tout

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

 

**CETTE RUBRIQUE S’APPLIQUE À :** ![](../Image/Applies%20to/yes.png)SQL Server \(à partir de la version 2008\) ![](../Image/Applies%20to/yes.png)Azure SQL Database ![](../Image/Applies%20to/yes.png)Azure SQL Data Warehouse ![](../Image/Applies%20to/yes.png)Parallel Data Warehouse

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

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle), Base de données Azure SQL.
Type de donnéesPlageStockage
bigint-2^63 (-9,223,372,036,854,775,808) à 2^63-1 (9,223,372,036,854,775,807)Huit octets
int-2^31 (-2 147 483 648) à 2^31-1 (2 147 483 647)Quatre octets
smallint-2^15 (-32 768) à 2^15-1 (32 767)Deux octets
tinyintDe 0 à 255Un octet

Le type de données int est le type de données integer principal dans SQL Server. 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 n'effectue pas la promotion automatique d'autres types de données integer (tinyint, smallint et int) en bigint.

System_CAPS_ICON_caution.jpg Attention


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étrable 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étrable, 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étrable, 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 du résultat d'une requête paramétrée automatiquement qui comprend l'expression SELECT CAST (1.0 / 7 AS float) diffère de la valeur du résultat de la même requête non paramétrée automatiquement, car le résultat de la requête paramétrée automatiquement est tronqué afin qu'il puisse être contenu dans le type de données numeric (10, 0).

Lorsque les entiers sont convertis implicitement en un type de données character, si l'entier est trop grand pour le champ de caractère, SQL Server affiche le caractère ASCII 42, l'astérisque (*).

Les constantes entières supérieures à 2 147 483 647 sont converties en type de données decimal, et non bigint. L'exemple suivant montre que lorsque la valeur de seuil est dépassée, le type de données du résultat devient decimal au lieu de int.

SELECT 2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2 ;  

Voici l'ensemble des résultats.

Result1      Result2  
1073741823   1073741824.500000  

L'exemple suivant crée une table à l'aide des types de données bigint, int, smallint et tinyint. Les valeurs sont insérées dans chaque colonne et retournées dans l'instruction SELECT.

CREATE TABLE dbo.MyTable  
(  
  MyBigIntColumn bigint  
 ,MyIntColumn  int  
 ,MySmallIntColumn smallint  
 ,MyTinyIntColumn tinyint  
);  
  
GO  
  
INSERT INTO dbo.MyTable VALUES (9223372036854775807, 214483647,32767,255);  
 GO  
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn  
FROM dbo.MyTable;  
  

Voici l'ensemble des résultats.

MyBigIntColumn       MyIntColumn MySmallIntColumn MyTinyIntColumn  
-------------------- ----------- ---------------- ---------------  
9223372036854775807  214483647   32767            255  
  
(1 row(s) affected)  
  

ALTER TABLE (Transact-SQL)
CAST et CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
SET @local_variable (Transact-SQL)
sys.types (Transact-SQL)

Ajouts de la communauté

Afficher:
© 2016 Microsoft