int、bigint、smallint、および tinyint (Transact-SQL)

整数データを使用する実数データ型です。

データ型

範囲

ストレージ

bigint

-2^63 (-9,223,372,036,854,775,808) ~ 2^63-1 (9,223,372,036,854,775,807)

8 バイト

int

-2^31 (-2,147,483,648) ~ 2^31-1 (2,147,483,647)

4 バイト

smallint

-2^15 (-32,768) ~ 2^15-1 (32,767)

2 バイト

tinyint

0 ~ 255

1 バイト

説明

SQL Server における主要な整数型は int 型です。bigint 型は、整数値が int 型でサポートされる範囲を超える可能性がある場合に使用します。

bigint は、データ型の優先順位表では smallmoney と int の間に位置します。

関数は、パラメータ式が bigint データ型である場合にのみ bigint を返します。SQL Server は他の整数型 (tinyint、smallint、および int) を bigint に自動的に昇格させません。

注記注意

+、-、*、/、または % の算術演算子を使用して、int、smallint、tinyint、または bigint 定数値を float、real、decimal、または numeric データ型に明示的または暗黙的に変換する場合、クエリが自動的にパラメータ化されるかどうかによって SQL Server がデータ型の計算に適用するルールと結果式の有効桁数が変わります。

したがって、クエリで同じ式を使用しても異なる結果が得られることがあります。クエリが自動パラメータ化されない場合、定数値はまず numeric 型に変換されます。この場合、指定されたデータ型に変換するまで定数の値を保持できる程度の有効桁数が使用されます。たとえば、定数 1 は numeric (1, 0) に変換され、定数値 250 は numeric (3, 0) に変換されます。

クエリが自動パラメータ化される場合、定数値は常に numeric (10, 0) 型に変換されてから、最終的なデータ型に変換されます。/ 演算子を使用すると、同様のクエリで結果の型の有効桁数が異なるだけでなく、結果の値も異なる場合があります。たとえば、SELECT CAST (1.0 / 7 AS float) という式が含まれる自動パラメータ化されたクエリの結果値と、自動パラメータ化されない同じクエリの結果値は異なります。これは、自動パラメータ化されたクエリの場合、numeric (10, 0) データ型に収まるように結果が切り捨てられるためです。パラメータ化されたクエリの詳細については、「簡易パラメータ化」を参照してください。