只是 nvarchar
支持多字节字符吗?如果是这种情况,除了存储问题之外,使用 varchars
真的有什么意义吗?
最佳答案
nvarchar
列可以存储任何 Unicode 数据。 varchar
列仅限于 8 位代码页。有人认为应该使用varchar
,因为它占用的空间较小。我相信这不是正确的答案。代码页不兼容是一种痛苦,而 Unicode 是解决代码页问题的良方。现在有了便宜的磁盘和内存,真的没有理由再浪费时间来处理代码页了。
所有现代操作系统和开发平台都在内部使用 Unicode。通过使用 nvarchar
而不是 varchar
,您可以避免每次读取或写入数据库时都进行编码转换。转换需要时间,并且容易出错。从转换错误中恢复是一个不平凡的问题。
如果您与仅使用 ASCII 的应用程序交互,我仍然建议在数据库中使用 Unicode。操作系统和数据库整理算法将更好地与 Unicode 配合使用。 Unicode 在与其他系统交互时避免了转换问题。你将为 future 做准备。并且您始终可以验证您的数据是否仅限于 7 位 ASCII,以适用于您必须维护的任何遗留系统,即使同时享受完整 Unicode 存储的一些好处。
关于sql-server - varchar 和 nvarchar 有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/144283/