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


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個

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM