SQL Server 提供多組外觀相似但行為不同的資料類型,選錯會導致儲存空間浪費、資料截斷或效能問題。本文將五大類易混淆類型逐一拆解,附上長度、範圍、儲存特性對照表與選擇建議。
| 類型 | 長度 | 儲存特性 | 適用場景 |
|---|---|---|---|
| char | 1-8000 | 定長,不足以空白填充 | 固定長度代碼(如身分證字號) |
| varchar | 1-8000 | 變長,不填充 | 一般可變長度字串 |
| text | 最大 2^31-1 字元 | 非 Unicode 大物件,已淘汰建議用 varchar(max) | 大量文字(舊版相容) |
| nchar | 1-4000 | 定長 Unicode(雙位元組) | 固定長度多國語言 |
| nvarchar | 1-4000 | 變長 Unicode | 一般多國語言字串(推薦) |
| ntext | 最大 2^30-1 字元 | Unicode 大物件,已淘汰建議用 nvarchar(max) | 大量多國語言文字 |
關鍵差異:n 系列支援 Unicode(中英同為 2 位元組),最多 4000 字元;非 n 系列英文 1 位元組、中文 2 位元組,最多 8000 位元組。
datetime:1753-01-01 至 9999-12-31,精度 3.33 毫秒,8 位元組。smalldatetime:1900-01-01 至 2079-06-06,精度 1 分鐘,4 位元組。| 類型 | 範圍 | 位元組 |
|---|---|---|
| bigint | -2^63 ~ 2^63-1 | 8 |
| int | -2^31 ~ 2^31-1 | 4 |
| smallint | -32,768 ~ 32,767 | 2 |
| tinyint | 0 ~ 255 | 1 |
| bit | 0 或 1 | 1 位元(資料表中每 8 欄佔 1 位元組) |
兩者完全等效。參數 (p, s):p=精度(1-38,所有位數總和),s=小數位數(0-p,預設 0)。
float:-1.79E308 ~ 1.79E308,8 位元組(預設 float(53))。real:-3.40E38 ~ 3.40E38,4 位元組(等同 float(24))。