首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 易混淆資料類型完整辨析:字串、日期、整數、精確數值、近似數值

     編輯:關於SqlServer

1. 字串類型:char/varchar/text vs nchar/nvarchar/ntext

類型長度範圍儲存特性適用場景
char(n)1-8000**定長**,不足右補空格固定長度代碼 (ISO 國碼、身分證字號)
varchar(n)1-8000**變長**,實際長度 + 2 位元組開銷一般可變字串
text≤ 2^31-1 字元LOB,行外儲存,**已淘汰**舊系統大文本,改用 varchar(max)
nchar(n)1-4000定長 **Unicode (UTF-16)**,每字 2 位元組固定長度多語言
nvarchar(n)1-4000變長 Unicode**多語言首選**,含中文
ntext≤ 2^30-1 字元Unicode LOB,**已淘汰**改用 nvarchar(max)

關鍵差異:n* 類型**不分中英**,皆佔 2 位元組/字元;char/varchar 中文佔 2 位元組、英文 1 位元組。nvarchar(4000) 可存 4000 中文或 4000 英文;varchar(8000) 可存 8000 英文或 4000 中文。**現代開發預設用 nvarchar**,除非確定純 ASCII 且極度在意儲存空間。

2. 日期時間:datetime vs smalldatetime

類型範圍精度儲存大小
datetime1753-01-01 ~ 9999-12-313.33 毫秒8 位元組
smalldatetime1900-01-01 ~ 2079-06-061 分鐘4 位元組

**SQL 2008+ 新類型** (強烈建議):date (3 位元組)、time(n) (3-5 位元組)、datetime2(n) (6-8 位元組、100ns 精度、範圍同 datetime)、datetimeoffset(n) (含時區)。

3. 整數家族

類型範圍大小備註
bigint-2^63 ~ 2^63-18 位元組大流水號、雪花 ID
int-2^31 ~ 2^31-14 位元組**預設首選**
smallint-32,768 ~ 32,7672 位元組狀態碼、小範圍計數
tinyint0 ~ 2551 位元組布林擴充、極小枚舉
bit0 / 1 / NULL1 位元 (8 欄位打包 1 位元組)真偽旗標

4. 精確數值:decimal / numeric

  • **完全同義**,兩個參數:decimal(p, s)
  • p (precision) = 總位數 (1-38),s (scale) = 小數位數 (0-p)
  • 金額、匯率、精確測量**必須用 decimal**,嚴禁 float/real

5. 近似數值:float / real

類型範圍精度備註
float(n)±1.79E308n=1-24 (7 位數) / 25-53 (15 位數)預設 float(53) = double precision
real±3.40E387 位數同義於 float(24)

科學計算、工程數值可用;**財務、計價、比對嚴禁使用**。


選型口訣:
**字串** → 預設 nvarchar,定長用 nchar,大文本 nvarchar(max)。
**日期** → 新專案 datetime2/date/time。
**整數** → 預設 int,大號 bigint,旗標 bit。
**金額** → decimal(19,4) 或 decimal(38,10)。
**科學** → float。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved