使用整數數據的精確數字數據類型。 sql
數據類型 express |
範圍 app |
存儲 函數 |
---|---|---|
bigint ui |
-2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807) spa |
8 字節 3d |
int code |
-2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647) orm |
4 字節 blog |
smallint |
-2^15 (-32,768) 到 2^15-1 (32,767) |
2 字節 |
tinyint |
0 到 255 |
1 字節 |
在數據類型優先次序表中,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) 數據類型。 |
下面的示例使用 bigint、int、smallint 和 tinyint 數據類型建立一個表。 值插入到每列中並在 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;
下面是結果集:
MyBigIntColumn MyIntColumn MySmallIntColumn MyTinyIntColumn -------------------- ----------- ---------------- --------------- 9223372036854775807 214483647 32767 255 (1 row(s) affected)