Varchar和Nvarchar之间的差异

Anonim

Varchar vs Nvarchar

Varchar是Variable Character Field的简称。字符表示具有不确定长度的数据。实际意义上的Varchar是数据库管理系统中的数据列类型。 Varchar列的字段大小可能会有所不同,具体取决于正在考虑的数据库。

在Oracle 9i中,该字段的最大限制为4000个字符。 MySQL的行数据限制为65,535,而Microsoft SQL Server 2005的字段限制为8000.当使用Varchar(max)时,这个数字在Microsoft SQL服务器中会更高,上升到2 GB。另一方面,Nvarchar是一个可以存储任何长度的Unicode数据的列。 Nvarchar必须遵守的代码页是8位编码。 Varchar的最大大小为8000,而NVarchar的最大大小为4000.这实际上意味着单个Varchar列最多可以包含8000个字符,单个Nvarchar列最多可以包含4000个字符。超出列值成为一个巨大的问题,甚至可能导致严重的问题,因为行不能跨越多个页面,SQL Server 2005除外,必须遵守限制或导致错误或截断。

Varchar和Nvarchar之间的主要区别之一是在Varchar中使用更少的空间。这是因为Nvarchar使用Unicode,由于编码细节的麻烦,它占用更多空间。对于存储的每个字符,Unicode需要两个字节的数据,与Varchar使用的非Unicode数据相比,这可能导致数据值看起来更高。另一方面,Varchar只需要为存储的每个字符提供一个字节的数据。但是,更重要的是,尽管使用Unicode会占用更多空间,但它确实解决了代码页不兼容问题,这些问题很难手动解决。

因此,可以忽略空间特征,而不是使用Unicode来修复产生的不兼容性所需的时间更短。此外,磁盘和内存的成本也变得非常实惠,确保通常可以忽略空间功能,而解决Varchar出现问题所需的时间越长,就越不容易被忽视。

所有开发平台都在内部使用现代操作系统,允许运行Unicode。这意味着Nvarchar的使用频率高于Varchar。避免了编码转换,减少了读取和写入数据库所需的时间。这也显着减少了错误,转换错误的恢复确实成为一个简单的问题。

使用Unicode的好处也适用于使用ASCII应用程序接口的人,因为数据库响应良好,特别是操作系统和数据库联盟算法。 Unicode数据可避免与转换相关的问题,并且如果限制为7位ASCII,则始终可以验证数据,而不管必须维护的遗留系统如何。

摘要

Varchar和Nvarchar具有不同的字符类型。当Nvarchar使用Unicode数据时,Varchar使用非Unicode数据。

Varchar和Nvarchar都具有必须遵守的不同数据类型。 Varchar仅以1字节序列保存数据,Nvarchar为每个字符保存2字节数据

最大长度也各不相同。 Varchar长度限制为8000字节,4000字节是Nvarchar的限制。

这是因为与Nvarchar使用的Unicode数据相比,Varchar中的存储大小更直接。