程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server數據類型int、bigint、smallint和tinyint范圍

SQL Server數據類型int、bigint、smallint和tinyint范圍

編輯:關於SqlServer

環境:SQLServer 2008 R2

使用整數數據的精確數字數據類型。

bigint

從 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807) 的整型數據(所有 數字)。存儲大小為 8 個字節。

int

從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。存儲大小為 4 個字節。int 的 SQL-92 同義字為 integer。

smallint

從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型數據。存儲大小為 2 個字節。

tinyint

從 0 到 255 的整型數據。存儲大小為 1 字節。

注釋

在支持整數值的 地方支持 bigint 數據類型。但是,bigint 用於某些特殊的情況,當整數值超過 int 數據類型支持的范圍時 ,就可以采用 bigint。在 SQL Server 中,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) 數據類型。

轉換整型數據

將整數隱式轉換為字符數據類型時,如果整數太大而無法容納到字符 字段中,則 SQL Server 會輸入 ASCII 字符 42,即星號 (*)。

大於 2,147,483,647 的整數常量將轉 換為decimal 數據類型,而不是 bigint 數據類型。下面的示例顯示當超過此阈值時,結果的數據類型將從 int 變為 decimal。

SELECT2147483647 / 2 AS Result1, 2147483649 / 2 AS Result2 ;

下面 是結果集:

Result1      Result2

1073741823   1073741824.500000

總結

數據類型的選擇要根據實際情況而定,最好能滿足需求。不要殺雞用 牛刀,因為對空間的浪費會很嚴重,效率也會受到一定的影響。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved