類型
型別
範圍
位元數
備註
精確數值
(整數)
bit
01null
1 byte
字串值truefalse可以轉換成bit值,即true會轉換成1;而false會轉換成0
tinyint
0~28-1 (0~255)
1 byte
"F", "M"
smallint
-215~215-1 (-32,768~32,767)
2 bytes
"男","女"
int
(/integer)
-231~231-1 (-2,147,483,648~2,147,483,647)
4 bytes

bigint
-263~263-1
8 bytes

精確數值
(小數)
numeric[(p[,s])]
-1038+1~1038-1
5~17 bytes
  1. 1.   numericdecimal的功能相同。
  2. 2.   p (有效位數):小數點左右兩側的位數和。p值必須是1~38之間的數值。
  3. 3.   s (小數位數):表示小數位數。小數位數必須是0 <= s <= p的值。只有在指定了有效位數時,才能指定小數位數。
  4. 4.   XXXX.yyy這可用numeric(7, 3)表示。
  5. 5.   numeric(18, 0)為預設值。
decimal[(p[,s])]
-1038+1~1038-1
5~17 bytes
精確數值
(貨幣)
money
-263~263-1 小數4
(-922,337,203,685,477.5808 922,337,203,685,477.5807)
8 bytes

smallmoney
-231~231-1 小數4
(-214748.3648~214748.3647)
4 bytes

近似數值
(小數)
float[(n)]
3.40E38~1.18E-3801.18E-38~3.40E38
n:1~24à4 byte
n:25~53à8 byte
  1. 1.     是用來儲存float數之尾數的位元數目,即規定有效位數和儲存體大小。
  2. 2.     n值必須是在1~53之間。
  3. 3.     n的預設值為53
real
1.79E308~2.23E-30802.23E-308~1.79E308
4 bytes
同於 float(24)
※注意:
(1)       需要精確數值行為時請勿使用floatreal這些資料類型,例如財務應用程式、牽涉到四捨五入的作業或者進行相等檢查作業時。
(2)       避免在 WHERE 子句的搜尋條件中使用 float  real 資料行,尤其是 = <> 運算子。最好將 float  real 資料行限制為 >  < 比較。

2. 文字類型(Character Types)
類型
型別
範圍
位元數
備註
Unicode
char(size)
固定長度1~8000字元,區分全半型
1字元  1 bytes
例如:在char(5)之下,abcabcde會以"abc空白空白""abcde”等方式儲存。
varchar(size)
變動長度1~8000字元,區分全半型
1字元  1 bytes
例如:在varchar(5)之下,abcabcde會以"abc""abcde”等方式儲存。
varchar(max)
1~231-1字元
0 ~ 2 GB

Unicode
nchar(size)
固定長度1~4000字元,不區分全半型,為Unicode編碼
1字元  2 bytes

nvarchar(size)
變動長度1~4000字元,不區分全半型,為Unicode編碼
1字元  2 bytes

nvarchar(max)
1~231-1字元,為Unicode編碼
0 ~ 2 GB

※注意:
(1)       在未來的Microsoft SQL Server版本中,將移除ntexttextimage等資料類型。請避免在新的開發工作中使用這些資料類型,並修改目前在使用這些資料類型的應用程式,建護改用nvarchar(max)varchar(max)varbinary(max)

3. 日期和時間類型(Date and Time Types)

類型
型別
範圍
位元數
備註
期和
時間類型
datetime
1753/01/01 00:00:00.000 9999/12/31 23:59:59.999 
(精確度:0.00333秒)
8 bytes
例如:
2008-11-27 08:08:08.888
smalldatetime
1900/01/01 00:00 2079/06/06 23:59 
(精確度:1分)
4 bytes
例如:
2008-11-24 15:11
datetime2(size)
0001/01/01 00:00:00.0000000 9999/12/31 23:59:59.9999999 
(精確度:n:0~710-n秒)
6~8 bytes
格式:
YYYY-MM-DD HH:MI:SS.NNNNNNN
date
0001/01/01 ~ 9999/12/31 (精確度:1天)
3 bytes
格式:YYYY-MM-DD
time(size)
00:00:00.000000023:59:59.9999999 
(精確度:n:0~710-n秒)
3~5 bytes
格式:HH:MI:SS.NNNNNNN
datetimeoffset(size)
0001/01/01 00:00:00.0000000 ~ 9999/12/31 23:59:59.9999999 
(以UTC為單位)
8~10 bytes
格式:
YYYY-MM-DD HH:MI:SS.NNNNNNN+|-
HH:MI

4. 二進位資料類型(Binary Types)
類型
型別
範圍
位元數
備註
二進位
資料
binary(size)
固定長度1~8000 bytes
固定長度 8000 bytes,不足自動補上 0x00
使用於「資料行資料項目的大小不一致」時。
varbinary(size)
變動長度1~8000 bytes
變動長度
使用於「資料行資料項目的大小變化相當大」時。
varbinary(max)
1~231-1 bytes
0 ~ 2 GB
使用於「資料行資料項目超過8,000位元組」。
地理位置空間資料
geometry
利用CLR實作資料類型,適用平面座標系統的資料


geography
利用CLR實作資料類型,適用經緯度座標系統的資料


※注意:
(1)       在儲存如安全性識別碼(SID)、全域唯一識別碼(GUID)或可以儲存成十六進位縮寫的複數時,就可以使用「二進位資料」。
(2)       當資料定義或變數宣告陳述式中沒有指定size時,預設為1。當size不是利用CAST函數來指定時,預設為30

5. 其他類型(Other Types)
型別
範圍
位元數
備註
xml
xml資料
0 ~ 2 GB
可以使用xml資料類型方法(如:query()value()exist()modify()nodes())來查詢儲存在xml類型之變數或資料行中的XML執行個體。
uniqueidentifier
全域唯一識別碼(GUID)
16 bytes
  1. 1.    GUID 是一種唯一的二進位數字;全世界的電腦都不會產生重複的GUID值。
  2. 2.    GUID 的主要用途是在有許多站台與許多電腦的網路上指派一個唯一識別碼。
timestamp
資料庫內自動產生唯一的二進位值,用於指出資料庫中發生資料修改的「相對順序」。
8 bytes

hierarchyid
利用CLR實作資料類型,用於管理具有階層式結構的資料及資料表。


※注意:
(1)       請勿在「索引鍵」中使用timestamp資料行 (尤其是主索引鍵),因為每次修改資料列時,timestamp值就會變更。
(2)       若要記錄資料表中發生資料修改的時間,請使用datetime2smalldatetime資料類型來記錄事件和觸發程序,以便在發生修改時,自動更新這些值。
(3)       timestamp rowversion資料類型的同義字。在 DDL 陳述式中,請盡可能利用rowversion來取代timestamp
(4)       timestamp語法已被取代。未來的Microsoft SQL Server版本將移除這項功能。請避免在新的開發工作中使用這項功能,並修改目前使用這項功能的應用程式。