首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 資料類型完整對照:長度、精度、範圍與儲存空間權威指南

     編輯:MySQL 資料庫相關知識

精確數值類型

類型儲存空間範圍精度/小數位適用場景
bit1 Byte (每 8 欄位)0, 1, NULL—布爾旗標、狀態位
tinyint1 Byte0 ~ 255—極小計數、枚舉代碼
smallint2 Bytes-32,768 ~ 32,767—年齡、年份、中小計數
int4 Bytes-2,147,483,648 ~ 2,147,483,647—通用 ID、外鍵、計數器
bigint8 Bytes-9.22e18 ~ 9.22e18—大數據量主鍵、時間戳毫秒
decimal / numeric5-17 Bytes (視精度)-10^38+1 ~ 10^38-1精度 1-38, 小數位 0-38金額、價格、比率、精確計算
money8 Bytes-922,337,203,685,477.5808 ~ +922,337,203,685,477.5807固定 4 位小數貨幣金額 (舊系統相容)
smallmoney4 Bytes-214,748.3648 ~ +214,748.3647固定 4 位小數小額貨幣

近似數值類型

類型空間範圍精度備註
float(n)4/8 Bytes±1.79e308n=1-24 → 4 Bytes (7 位有效數字)
n=25-53 → 8 Bytes (15 位有效數字)
科學計算、圖形座標、非精確測量
real4 Bytes±3.40e387 位有效數字float(24) 同義詞

日期時間類型

類型空間範圍精度時區感知備註
datetime8 Bytes1753-01-01 ~ 9999-12-313.33 毫秒否舊版通用、範圍較窄
datetime2(n)6-8 Bytes0001-01-01 ~ 9999-12-31100 奈秒 (n=7)否推薦新系統使用、範圍更大、精度更高
smalldatetime4 Bytes1900-01-01 ~ 2079-06-061 分鐘否已棄用建議
date3 Bytes0001-01-01 ~ 9999-12-31天否純日期 (生日、截止日)
time(n)3-5 Bytes00:00:00 ~ 23:59:59.9999999100 奈秒否純時間 (工時、班次)
datetimeoffset(n)8-10 Bytes同 datetime2 + 時區位移100 奈秒是跨時區系統、全球化應用

字元字串類型

類型最大長度儲存開銷Unicode適用場景
char(n)8,000 字元n 位元組 (固定)否定長代碼 (ISO、郵遞區號、MD5)
varchar(n)8,000 字元實際長度 + 2 位元組否變長文字、名稱、描述
varchar(max)2 GB (2^31-1 字元)實際長度 + 2 位元組 (大值溢出存儲)否長文本、JSON、XML
text2 GB已棄用,請用 varchar(max)否舊系統維護
nchar(n)4,000 字元2n 位元組 (固定)是 (UTF-16)定長多語言代碼
nvarchar(n)4,000 字元2 × 實際長度 + 2 位元組是變長多語言文字、通用推薦
nvarchar(max)2 GB2 × 實際長度 + 2 位元組是長多語言文本
ntext2 GB已棄用,請用 nvarchar(max)是舊系統維護

二進位字串類型

類型最大長度儲存開銷適用場景
binary(n)8,000 位元組n 位元組 (固定)固定長二進位 (UUID、雜湊、加密金鑰)
varbinary(n)8,000 位元組實際長度 + 2 位元組變長二進位 (檔案片段、圖片縮圖)
varbinary(max)2 GB實際長度 + 2 位元組大型二進位物件 (BLOB、檔案儲存)
image2 GB已棄用,請用 varbinary(max)舊系統維護

特殊資料類型

類型空間說明適用場景
uniqueidentifier16 BytesGUID (NEWID()/NEWSEQUENTIALID())分散式主鍵、合併複寫
timestamp / rowversion8 Bytes資料庫級遞增二進位數、自動更新、不可手動修改樂觀鎖版本號、資料列變更追蹤
sql_variant視基礎類型可儲存除 text/ntext/image/timestamp/sql_variant 外任意類型極少用、動態屬性包 (EAV 模式)
xml2 GB原生 XML 支援、結構驗證、XQuery/XPath 索引XML 文檔儲存與查詢
cursor—游標參數/變數專用預存程序游標傳遞
table—表值參數/變數、記憶體優化表類型批次傳遞參數、暫存結果集
hierarchyid視深度樹狀結構編碼 (CLR 類型)組織架構、分類樹、檔案系統路徑
geometry / geography視複雜度平面/球面空間資料 (CLR 類型、OGC 標準)GIS 應用、位置服務、空間索引

精度、小數位數與長度運算規則

當兩個運算元進行算術運算 (+, -, *, /) 時,結果類型遵循以下優先順序與精度推導:

  1. 類型優先順序:sql_variant → xml → datetimeoffset → datetime2 → datetime → smalldatetime → date → time → float → real → decimal → money → smallmoney → bigint → int → smallint → tinyint → bit
  2. Decimal 精度推導 (p=精度, s=小數位):
    • 加減法:result_p = max(s1, s2) + max(p1-s1, p2-s2) + 1,result_s = max(s1, s2),上限 38
    • 乘法:result_p = p1 + p2 + 1,result_s = s1 + s2,上限 38
    • 除法:result_p = p1 - s1 + s2 + max(6, s1 + p2 + 1),result_s = max(6, s1 + p2 + 1),上限 38
  3. 字串長度:連接結果長度 = 運算元長度之和,超過 8000/4000 截斷或轉為 max 類型

MySQL vs SQL Server 類型對照快查

語意MySQLSQL Server遷移注意
自增整數BIGINT AUTO_INCREMENTBIGINT IDENTITY(1,1)語法不同,種子/增量可配置
精確金額DECIMAL(19,4)DECIMAL(19,4) / MONEYMONEY 固定 4 位小數、隱含貨幣語意
UTC 時區感知TIMESTAMPDATETIMEOFFSETTIMESTAMP 範圍到 2038 年,DATETIMEOFFSET 完整支援
Unicode 字串VARCHAR(N) CHARSET utf8mb4NVARCHAR(N)SQL Server 雙字節固定,MyUTF8 變長 1-4 字節
大文本LONGTEXTNVARCHAR(MAX)儲存機制不同 (溢出頁 vs LOB)
GUIDCHAR(36) / BINARY(16)UNIQUEIDENTIFIERSQL Server 原生函數 NEWSEQUENTIALID() 利於索引
JSONJSONNVARCHAR(MAX) + ISJSON/JSON_VALUEMySQL 原生 JSON 類型、支援索引、部分更新
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved