sqlServer2012(936 簡體中文GBK )為例: 例如: varchar(10),只能存儲10個英文字元或數字,也只能存儲5個漢字; char(10),只能存儲10個英文字元或數字,也只能存儲5個漢字; nvarchar(10),即存儲10個英文字元或數字,也能存儲10個漢字; ncha ...
sqlServer2012(936 簡體中文GBK )為例:
例如:
varchar(10),只能存儲10個英文字元或數字,也只能存儲5個漢字;
char(10),只能存儲10個英文字元或數字,也只能存儲5個漢字;
nvarchar(10),即存儲10個英文字元或數字,也能存儲10個漢字;
nchar(10),即存儲10個英文字元或數字,也能存儲10個漢字;
varchar(max),大值數據類型最多可以存儲2^30-1個位元組的數據(varchar(max)、nvarchar(max)、varbinary(max))
小結:
Unicode字元集就是為瞭解決字元集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。
而首碼n就表示Unicode字元,比如nchar,nvarchar,這兩種類型使用了Unicode字元集。
超過大小會提示出錯。
補充說明:
sql server中的Varchar和Nvarchar的區別:
1. Varchar按實際位元組長度存儲,1個漢字1位元組,1個英文1位元組,長度介於1和8000之間,存儲大小為輸入數據的位元組的實際長度
2. Nvarchar按字元數量存儲,不論漢字或英文,都是2位元組,長度介於1與4000之間,存儲大小是所輸入字元個數的兩倍(n首碼的,n表示Unicode字元,即所有字元都占兩個位元組)
3. 從存儲方式上,nvarchar是按字元存儲的,而 varchar是按位元組存儲的
4. 從存儲量上考慮, varchar比較節省空間,因為存儲大小為位元組的實際長度,而 nvarchar是雙位元組存儲
5. 如果你做的項目可能涉及不同國家語言之間的轉換,建議用nvarchar,因為nvarchar是使用Unicode編碼,會減少亂碼的出現幾率
6. Char/NChar固定長度數據類型,不足的補英文半形空格。
LEN()函數:返回給定字元串表達式的字元(而不是位元組)個數,其中不包含尾隨空格。(Len只返回字元數,一個漢字代表一個字元)
DATALENGTH()函數:返回任何表達式所占用的位元組數。(Datalength返回的是位元組數,一個漢字兩個位元組)
Len()不包含空格在內長度,而DATALENGTH()包含空格。
mysql:
在5.5.49的版本,字元集是utf-8下,char(10)和varchar(10)存儲的漢字和英文的數量都是10個