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

適用対象:yesSQL Server (サポートされているすべてのバージョン) Yes Azure SQL Database Yes azure SQL Managed Instance yes azure Synapse analytics yes analytics Platform System (PDW)

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

データ型 Range ストレージ
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 バイト

解説

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

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

関数を返します。 bigint 、パラメーター式が場合にのみ、 bigint データ型。 SQL Server は、他の整数データ型 (tinyintsmallint、および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) を含む自動パラメーター化されたクエリの結果値は、自動パラメーター化されていない同じクエリの結果値と異なります。これは、自動化クエリの結果が SELECT CAST (1.0 / 7 AS float) データ型に一致するように切り捨てられるためです。

整数型データの変換

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

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)