一尘不染

varchar 和 nvarchar 有什么区别?

javascript

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


阅读 150

收藏
2022-02-22

共1个答案

一尘不染

列可以nvarchar存储任何 Unicode 数据。一varchar列仅限于 8 位代码页。有些人认为varchar应该使用它,因为它占用的空间更少。我相信这不是正确的答案。代码页不兼容是一件痛苦的事,而 Unicode 是解决代码页问题的方法。现在有了便宜的磁盘和内存,真的没有理由再浪费时间在代码页上乱搞了。

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

如果您正在与仅使用 ASCII 的应用程序交互,我仍然建议在数据库中使用 Unicode。操作系统和数据库排序算法将更好地与 Unicode 配合使用。Unicode 在与其他系统交互时避免了转换问题。你将为未来做准备。对于您必须维护的任何遗留系统,您始终可以验证您的数据是否仅限于 7 位 ASCII,即使在享受完整 Unicode 存储的一些好处的同时。

2022-02-22