數據庫中的字符類型存儲字符和漢字的數量

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個

相關文章
相關標籤/搜索