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) データ型に収まるように結果が切り捨てられるためです。

整数型データの変換

整数を暗黙的に文字データ型に変換するとき、整数が大きすぎて文字型フィールドに格納できない場合、ASCII 文字コード 42 のアスタリスク (*) が SQL Server によって入力されます。

2,147,483,647 を超える整数は、bigint データ型ではなく、decimal データ型に変換されます。 次の例では、int 値がしきい値を超えた場合に、変換結果が decimal 型に変わります。

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

以下に結果セットを示します。

Result1      Result2
1073741823   1073741824.500000

関連項目

参照

ALTER TABLE (Transact-SQL)

CAST および CONVERT (Transact-SQL)

CREATE TABLE (Transact-SQL)

DECLARE @local\_variable (Transact-SQL)

SET @local\_variable (Transact-SQL)

sys.types (Transact-SQL)