sql-server - varchar 和 nvarchar 有什么区别?

标签 sql-server varchar nvarchar

只是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/

相关文章:

sql-server - 更新表中的地理列

sql-server - 在 SQL Server 2005 中检索以图像形式存储的数据

sql - 如何完全删除身份

php - VARCHAR 列值的日期比较

MySQL varchar大小存储——一字节、二字节转换

sql-server - 无论登录日期格式如何,都将 nvarchar 转换为日期时间?

sql - Microsoft SQL Server 查询改进

html - VarChar MySQL 行 HTML 内容在输出时减少

sql-server - 什么时候 nvarchar(Max) = nvarchar(4000)?

sql-server - 什么时候分配空间