int、bigint、smallint 和 tinyint (Transact-SQL)

更新: 2006 年 4 月 14 日

使用整數資料的 Exact-number 資料類型。

資料類型 範圍 儲存體

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 2005 中的主要整數資料類型。bigint 資料類型通常是在整數值可能超過 int 資料類型所支援的範圍時使用。

bigint 位於資料類型優先順序圖表中 smallmoneyint 之間。

只有當參數運算式是 bigint 資料類型時,函數才會傳回 bigint。SQL Server 不會自動將其他整數類型 (tinyintsmallintint) 提升為 bigint

ms187745.Caution(zh-tw,SQL.90).gif注意:
當您使用 +、-、*、/ 或 % 算術運算子,以隱含或明確方式,將 intsmallinttinyintbigint 常數值轉換為 floatrealdecimalnumeric 資料類型時,SQL Server 在計算運算式結果的資料類型和有效位數時所套用的規則,會根據查詢是否自動參數化而有所不同。 因此,查詢中類似的運算式,有時候也會產生不同的結果。如果查詢不是自動參數化,則常數值會先轉換為 numeric (其有效位數只是剛好可以容納常數值) 之後,再轉換為指定的資料類型。例如,先將常數值 1 轉換為 numeric (1, 0),再將常數值 250 轉換為 numeric (3, 0)。 當查詢經過自動參數化時,常數值一律會先轉換為 numeric (10, 0),再轉換為最終資料類型。如果有用到 / 運算子,則不僅類似查詢的結果類型有效位數不同,結果值也可能不一樣。例如,包含運算式 SELECT CAST (1.0 / 7 AS float) 的自動參數化查詢結果值,與非自動化參數之相同查詢的結果值不同,因為自動化參數的查詢結果,會配合 numeric (10, 0) 資料類型而被截斷。如需有關參數化查詢的詳細資訊,請參閱<簡單參數化>。

請參閱

參考

ALTER TABLE (Transact-SQL)
CAST 和 CONVERT (Transact-SQL)
CREATE TABLE (Transact-SQL)
資料類型 (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
DELETE (Transact-SQL)
INSERT (Transact-SQL)
SET @local\_variable (Transact-SQL)
UPDATE (Transact-SQL)

其他資源

資料類型轉換 (Database Engine)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

變更的內容:
  • 將「注意」的第三段開頭變更為「當查詢經過自動參數化時...」。在舊版文件中,該段落的開頭為「如果查詢不是自動參數化...」。