varchar和nvarchar有什么区别?

只是nvarchar支持多字节字符吗? 如果是这样的话,除了存储问题之外,真的有什么意义可以使用varchars吗?


一个nvarchar列可以存储任何Unicode数据。 一个varchar列仅限于一个8位代码页。 有些人认为应该使用varchar因为它占用更少的空间。 我相信这不是正确的答案。 代码页不兼容性是一种痛苦,Unicode是代码页问题的解决方案。 现在,随着廉价的磁盘和内存,真的没有理由浪费时间在代码页上闲逛。

所有现代操作系统和开发平台都在内部使用Unicode。 通过使用nvarchar而不是varchar ,每次读取或写入数据库时​​都可以避免进行编码转换。 转换需要时间,并且容易出错。 从转换错误中恢复是一个不平凡的问题。

如果您正在使用仅使用ASCII的应用程序进行连接,我仍然建议在数据库中使用Unicode。 操作系统和数据库整理算法将使用Unicode更好地工作。 Unicode与其他系统连接时避免了转换问题。 你将为未来做准备。 而且,即使在享受完整Unicode存储的某些优势的情况下,您始终可以验证您的数据仅限于7位ASCII码,无论您需要维护哪个旧系统。


varchar :可变长度的非Unicode字符数据。 数据库归类确定数据使用哪个代码页存储。

nvarchar :可变长度的Unicode字符数据。 取决于比较的数据库排序规则。

掌握这些知识后,请使用与输入数据相匹配的任何一种(ASCII码与Unicode)。


我总是使用nvarchar,因为它允许我正在构建的任何数据可以承受几乎所有的数据。 我的CMS系统不小心做了中文,因为我使用了nvarchar。 现在,任何新的应用程序都不应该真正关心所需的空间数量。

链接地址: http://www.djcxy.com/p/32827.html

上一篇: What is the difference between varchar and nvarchar?

下一篇: Which lock hints should I use (T