天天看點

char nchar varchar nvarchar的差別

N:表示unicode格式編碼,

Var:表示可變長度.

兩者結合形成這4種類型

詳細說明:

1.Unicode 字元資料

nchar[ ( n ) ]: n 個字元的固定長度的 Unicode 字元資料。

nvarchar[ ( n | max ) ] :可變長度 Unicode 字元資料。

說明:

N:1-4000(含) 這裡n是字元長度,因為是Unicode,是以位元組數是字元的2倍,是以為1-8000個位元組.

即使用不到兩個位元組都占用兩個位元組

其他:

sysname 是系統提供的使用者定義資料類型,除了不以為零外,在功能上與 nvarchar(128) 相同。sysname 用于引用資料庫對象名

2.非 Unicode (ASCII)字元資料

char[ ( n ) ]          固定長度,非 Unicode 字元資料,

varchar[ ( n | max ) ]  可變長度,非 Unicode 字元資料。

說明:

N:1-4000(含) 這裡n是字元長度,因為是非Unicode,也是位元組長度;是以位元組就是字元,是以為1-8000個位元組.也是1-8000個字元.

max 訓示最大存儲大小是 2^31-1 個位元組。存儲大小是輸入資料的實際長度加 2 個位元組, 可變長度的偏移陣列 VarOffset   2*VarCount(每一列都要另外加上2個自己的偏移量)。所輸入資料的長度可以為 0 個字元。

将為使用 char 或 varchar 的對象指派資料庫的預設排序規則,除非使用 COLLATE 子句指派了特定的排序規則。該排序規則控制用于存儲字元資料的代碼頁。

如果沒有在資料定義或變量聲明語句中指定 n,則預設長度為 1。如果沒有使用 CAST 函數指定 n,則預設長度為 30

使用場合:

(1)如果列資料項的大小可能相同,請使用 nchar/char。

(2)如果列資料項的大小可能差異很大,請使用 nvarchar/varchar。

(3)如果站點支援多語言,請考慮使用 nchar 或 nvarchar,以最大限度地消除字元轉換問題。否則使用 char 或varchar。

(4)如果列資料項大小相差很大,而且大小可能超過 8,000 位元組,請使用 varchar(max)。

nvarchar、nchar、char、varchar實際占用存儲空間總結

nvarchar [ ( n | max ) ]:unicode,是以每個字元占用兩個位元組,加上2個位元組的行偏移 最大4000

nchar [ ( n ) ]:            unicode,是以每個字元占用兩個位元組 最大4000

char [ ( n ) ]:              是多少就是多少 最大8000

varchar [ ( n | max ) ]:  加上2個位元組的行偏移最大8000