sqlServer2012(936 簡體中文GBK )爲例:mysql
例如:sql
varchar(10),只能存儲10個英文字符或數字,也只能存儲5個漢字;函數
char(10),只能存儲10個英文字符或數字,也只能存儲5個漢字;編碼
nvarchar(10),即存儲10個英文字符或數字,也能存儲10個漢字;spa
nchar(10),即存儲10個英文字符或數字,也能存儲10個漢字;code
varchar(max),大值數據類型最多能夠存儲2^30-1個字節的數據(varchar(max)、nvarchar(max)、varbinary(max))server
小結:blog
Unicode字符集就是爲了解決字符集這種不兼容的問題而產生的,它全部的字符都用兩個字節表示,即英文字符也是用兩個字節表示。
而前綴n就表示Unicode字符,好比nchar,nvarchar,這兩種類型使用了Unicode字符集。utf-8
超過大小會提示出錯。字符串
補充說明:
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個