它只是nvarchar支持多字节字符?如果是这样的话,varchars还有其他的意义吗?
varchar:可变长度的非Unicode字符数据。数据库归类确定数据使用哪个代码页存储。
nvarchar:可变长度的Unicode字符数据。取决于数据库排序规则以进行比较。
有了这些知识,使用与你的输入数据相匹配的任何一个(ASCII与Unicode)。
一nvarchar列可以存储任何Unicode数据。
一varchar列仅限于8位字符串。
有人认为varchar应该实用,因为它占用更少的空间。代码页不兼容性是一个痛苦,Unicode是代码页问题的解决方案。现在廉价的磁盘和内存,真的没有理由浪费时间在代码页上了。
所有现代操作系统和开发平台都在内部使用Unicode。通过使用nvarchar而不是varchar,您可以避免每次读取或写入数据库时都进行编码转换。转换需要时间,并且容易出错。从转换错误恢复是一个不平凡的问题。
如果您正在使用ASCII的应用程序接口,我仍然建议在数据库中使用Unicode。操作系统和数据库整理算法将使用Unicode更好地工作。Unicode与其他系统连接时避免了转换问题。而你将为未来做准备。而且,即使在享受完整Unicode存储的情况下,您也可以随时验证您的数据是否限于7位ASCII码,无论您需要维护哪个旧版系统。