在 Microsoft SQL Server中,每個列、局部變量、表達式和參數都有一個相關的數據類型,這是指定對象可持有的數據類型(整型、字符、money 等等)的特性。SQL Server 提供系統數據類型集,定義了可與 SQL Server 一起使用的所有數據類型。下面列出系統提供的數據類型集。
可以定義用戶定義的數據類型,其是系統提供的數據類型的別名。有關用戶定義的數據類型的更多信息,請參見 sp_addtype 和創建用戶定義的數據類型。
當兩個具有不同數據類型、排序規則、精度、小數位數或長度的表達式通過運算符進行組合時:
通過將數據類型的優先順序規則應用到輸入表達式的數據類型來確定所得值的數據類型。有關更多信息,請參見數據類型的優先順序。
如果結果數據類型為 char、varchar、text、nchar、nvarchar 或 ntext,則結果值的排序規則由排序規則的優先順序規則決定。有關更多信息,請參見排序規則的優先順序。
結果的精度、小數位數及長度取決於輸入表達式的精度、小數位數及長度。有關更多信息,請參見精度、小數位數和長度。
SQL Server 為 SQL-92 兼容性提供了數據類型同義詞。有關更多信息,請參見數據類型同義詞。
精確數字
整數
bigint 從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數據(所有數字)。
int 從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。
smallint 從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整數數據。
tinyint 從 0 到 255 的整數數據。
bit
bit 1 或 0 的整數數據。
decimal 和 numeric
decimal 從 -10^38 +1 到 10^38 –1 的固定精度和小數位的數字數據。
numeric 功能上等同於 decimal。
money 和 smallmoney
money 貨幣數據值介於 -2^63 (-922,337,203,685,477.5808) 與 2^63 -1 (+922,337,203,685,477.5807) 之間,精確到貨幣單位的千分之十。
smallmoney 貨幣數據值介於 -214,748.3648 與 +214,748.3647 之間,精確到貨幣單位的千分之十。
近似數字
float 從 -1.79E + 308 到 1.79E + 308 的浮點精度數字。
real 從 -3.40E + 38 到 3.40E + 38 的浮點精度數字。
datetime 和 smalldatetime
datetime 從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確到百分之三秒(或 3.33 毫秒)。
smalldatetime 從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數據,精確到分鐘。
字符串
char 固定長度的非 Unicode 字符數據,最大長度為 8,000 個字符。
varchar 可變長度的非 Unicode 數據,最長為 8,000 個字符。
text 可變長度的非 Unicode 數據,最大長度為 2^31 - 1 (2,147,483,647) 個字符。
Unicode 字符串
nchar 固定長度的 Unicode 數據,最大長度為 4,000 個字符。
nvarchar 可變長度 Unicode 數據,其最大長度為 4,000 字符。sysname 是系統提供用戶定義的數據類型,在功能上等同於 nvarchar(128),用於引用數據庫對象名。
ntext 可變長度 Unicode 數據,其最大長度為 2^30 - 1 (1,073,741,823) 個字符。
二進制字符串
binary 固定長度的二進制數據,其最大長度為 8,000 個字節。
varbinary 可變長度的二進制數據,其最大長度為 8,000 個字節。
image 可變長度的二進制數據,其最大長度為 2^31 - 1 (2,147,483,647) 個字節。
其它數據類型
cursor 游標的引用。
sql_variant
一種存儲 SQL Server 支持的各種數據類型(text、ntext、timestamp 和 sql_variant 除外)值的數據類型。
table
一種特殊的數據類型,存儲供以後處理的結果集。
timestamp
數據庫范圍的唯一數字,每次更新行時也進行更新。
uniqueidentifIEr
全局唯一標識符 (GUID)。