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個
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/25138.html
標籤:SQL Server
