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

 

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data WarehouseouiParallel Data Warehouse

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

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
tinyint0 à 255Un octet

Le int type de données est le type de données integer principal dans SQL Server. Le bigint type de données est destiné à utiliser lorsque les valeurs entières peuvent dépasser la plage prise en charge par le int type de données.

bigint s’insère entre smallmoney et int dans le graphique de priorité de type de données.

Fonctions retournent bigint uniquement si l’expression de paramètre est un bigint type de données. SQL Serverne promeut pas automatiquement les autres types de données integer (tinyint, smallint, et int) à bigint.

System_CAPS_ICON_caution.jpg Attention


Lorsque vous utilisez le +, -, *, /, ou % des opérateurs arithmétiques pour effectuer la conversion implicite ou explicite de int, smallint, tinyint, ou bigint les valeurs de constante pour le float, réel, décimal ou numérique des types de données, les règles qui SQL Server s’applique lorsqu’il détermine le type de données et la précision des résultats des expressions diffèrent 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 de constante est d’abord convertie à numérique, dont la précision est assez grande pour contenir la valeur de la constante, avant de convertir le type de données spécifié. Par exemple, la valeur constante 1 est convertie en numérique (1, 0), et la valeur de constante 250 est convertie en numérique (3, 0).

Lorsqu’une requête est automatiquement paramétrable, la valeur de constante est toujours convertie en numérique (10, 0) avant de convertir 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 paramétrée automatiquement qui comprend l’expression SELECT CAST (1.0 / 7 AS float) diffèrent de la valeur de résultat de la même requête qui n’est pas paramétrée automatiquement, car les résultats de la requête paramétrée automatiquement seront tronqués pour s’adapter à la numérique (10, 0) type de données.

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 (*).

Constantes entières supérieures à 2 147 483 647 sont converties en la décimal type de données, pas les bigint type de données. L’exemple suivant montre que lorsque la valeur de seuil est dépassée, le type de données du résultat change d’une int à un décimal.

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 de la bigint, int, smallint, et tinyint des types de données. 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)
Création de TABLE (Transact-SQL)
DÉCLARER @local_variable (Transact-SQL)
Définissez @local_variable (Transact-SQL)
Sys.types (Transact-SQL)

Ajouts de la communauté

AJOUTER
Afficher: