1. 程式人生 > >char nchar varchar nvarchar的區別

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