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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

整数データを使用する実数データ型です。 データベースの容量を節約するために、すべての可能な値を確実に含めることができる最小のデータ型を使用します。 たとえば、255 歳以上の人は誰もいきていないので、人の年齢には tinyint で十分でしょう。 しかし、255 年を超える建物はあり得るので、建物の経過年数には tinyint では不十分になります。

データ型 Range 範囲の表記 ストレージ
bigint -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 -2^63 から 2^63-1 8 バイト
int -2,147,483,648 ~ 2,147,483,647 -2^31 から 2^31-1 4 バイト
smallint -32,768 ~ 32,767 -2^15 から 2^15-1 2 バイト
tinyint 0 ~ 255 2^0-1 から 2^8-1 1 バイト

解説

Int データ型は、主要な整数データ型が SQL Serverです。 Bigint データ型が使用するための整数値でサポートされている範囲を超える可能性があるときに、 int データ型。

bigint 間に位置 smallmoneyint データ型の優先順位表でします。

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

注意事項

+、-、*、/、または % の算術演算子を使用して、intsmallinttinyint、または bigint の定数値の暗黙的または明示的変換を実行して、floatrealdecimal、または numeric データ型にした場合、データ型と式の精度の計算が行われるときに SQL Server に適用される規則は、クエリが自動パラメーター化されているかどうかに応じて異なります。

したがって、クエリで同じ式を使用しても異なる結果が得られることがあります。 クエリが自動でないと、定数の値が最初に変換 数値, の有効桁数が十分な指定のデータ型に変換する前に、定数の値を保持するためにします。 定数の値 1 に変換するなど、 numeric (1, 0) , 、定数値 250 に変換し、 numeric (3, 0) です。

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

tinyint データ型は、Microsoft Fabric ではサポートされていません。

整数型データの変換

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

2,147, 483,647 に変換されます。 よりも大きい整数の定数、 decimal データ型ではなく、 bigint データ型。 次の例は、しきい値を超過すると、結果のデータ型変更から、 intdecimalです。

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

結果セットは次のようになります。

Result1      Result2  
1073741823   1073741824.500000  

次の例を使用してテーブルを作成、 bigint, 、int, 、smallint, 、および tinyint データ型。 値は各列に挿入され、SELECT ステートメントで返されます。

CREATE TABLE dbo.MyTable  
(  
  MyBigIntColumn BIGINT  
,MyIntColumn  INT
,MySmallIntColumn SMALLINT
,MyTinyIntColumn TINYINT
);  
  
GO  
  
INSERT INTO dbo.MyTable VALUES (9223372036854775807, 2147483647,32767,255);  
 GO  
SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn  
FROM dbo.MyTable;  

結果セットは次のようになります。

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

関連項目

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)