学习之路三十一:Varchar和NVarchar的理解
前段時間在測試的時候發現了一個問題,看過Log之后發現在插入數據到數據庫的時候發生異常了!
原因是由于插入的字符串太長,項目中的用到的類型是NVARCHAR,下面就是對它們的理解:
1.VARCHAR -- 字節數
示例:VARCHAR(10) - [中文代表兩個字節數]
上面的定義表示我存儲的字節數為10個,那么英文就能存10個,中文只能存5個!
?
2.NVARCHAR -- 字符數
示例:NVARCHAR(10) - [中文代表兩個字節]
上面的定義為我存儲的字符數為10個,那么英文就能存10個,那么中文也能存10個!
? ?如果把NVARCHAR理解為存儲的是字符數,那么就很容易理解在存儲中文時的規則了.
?
3.總結:
| ? | ? | 英文 | 中文 |
| VARCHAR(n) | 字節數 | N | n/2 |
| NVARCHAR(n) | 字符數 | N | n |
?
?
?
?
?
2013-11-30的補充:
?????????? 從存儲方式上,nvarchar是按字符存儲的,而 varchar是按字節存儲的;
???????? ? 從存儲量上考慮,?varchar比較節省空間,因為存儲大小為字節的實際長度,而 nvarchar是雙字節存儲;
???????? ? 在使用上,如果存儲內容都是英文字符而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因為nvarchar是使用Unicode編碼,即統一的字符編碼標準,會減少亂碼的出現幾率;
??????? ?如果你做的項目可能涉及不同語言之間的轉換,建議用nvarchar。
這點要注意:varchar ? 適合與存儲英文和數字; ? nvarchr一般用于存儲中文或其他語言的輸入,因為 ? 這樣,可以防止到其他語言平臺上出現亂碼的問題。
關于它們更深入的理解可以看下面的參考文章.
?
參考文章:
1.varchar和Nvarchar區別
2.char、varchar、text和nchar、nvarchar、ntext的區別
?
以同步至:個人文章目錄索引
總結
以上是生活随笔為你收集整理的学习之路三十一:Varchar和NVarchar的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 男1米8,190斤能当兵要吗 -征兵?
- 下一篇: Thread2