【SQL Server】char、nchar、varchar和nvarchar的区别

前言:

  char、nchar、varchar和nvarchar都是进行SQL Server数据库设计时用到的数据类型。本文将这几个数据类型作对比是因为他们很容易混淆,或是不知道自己设计数据库时要选择哪个最优。

对比:

char:

  char存储定长数据很方便,char字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()。最多能存储8000个英文,4000个汉字。

varchar

  存储变长数据,但存储效率没有char高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 varchar(10)是最合算的。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。最多能存储8000个英文,4000个汉字。

nchar、nvarchar

  多了个“n”,它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar只能存储4000个字符,无论英文还是汉字。

总结:

  char、nchar:定长,速度快,占空间大,需处理

  varchar、nvarchar:不定长,空间小,速度慢,无需处理

猜你喜欢

转载自blog.csdn.net/jing875480512/article/details/80472172