varchar和nvarchar有什么区别?
varchar和nvarchar有什么区别?
仅仅是因为 nvarchar
支持多字节字符吗?如果是这样的话,使用 varchar
除了存储考虑之外,真的有任何意义吗?
admin 更改状态以发布 2023年5月20日
一个 nvarchar
列可以存储任何 Unicode 数据。而 varchar
列则仅限于 8 位代码页。有些人认为应该使用 varchar
,因为它占用的空间更小。然而,我认为这不是正确的答案。代码页不兼容是个让人头疼的问题,而 Unicode 是解决代码页问题的方法。现今,由于磁盘和内存价格便宜,真的没有必要再去浪费时间处理代码页问题了。\n\n所有现代操作系统和开发平台都在内部使用 Unicode。使用 nvarchar
而不是 varchar
,可以避免每次从数据库读取或写入时进行编码转换。转换需要时间,并且容易出错。而解决转换错误是个不容易的问题。\n\n如果您正在与只使用 ASCII 的应用程序进行接口,则仍建议在数据库中使用 Unicode。操作系统和数据库排序算法将更好地与 Unicode 协同工作。使用 Unicode 避免了与其他系统交互时的转换问题,并且你将为未来做好准备。而且,尽管可以享受完全 Unicode 存储的好处,但您仍然可以验证您的数据是否仅限于 7 位 ASCII,适用于您正在维护的任何遗留系统。