它们的区别概括成:
char,nchar :定长,速度快,占空间大,需处理
varchar,nvarchar :不定长,空间小,速度慢,无需处理
nchar、nvarchar:处理Unicode码
char、varchar最多能存储8000个英文,4000个汉字。
nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
如何使用这些类型
如果确定存储的数据长度,而且不包中文的,可以选择char类型。
如果确定存储的数据长度,但可能包括中文,可以选择nchar类型。
如果不确定存储的数据长度,存储只有英文、数字的最好用varchar
如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型
类型 | 长度 | 使用说明 | 长度说明 |
char(n) | 定长 | 索引效率高 程序里面使用trim去除多余的空白 | n必须是一个介于 1 和 8000 之间的数值,存储大小为n个字节 |
varchar(n) | 变长 | 效率没char高 灵活 | n必须是一个介于 1 和 8000 之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节 |
nchar(n) | 定长 | 处理unicode数据类型(所有的字符使用两个字节表示) | n的值必须介于 1 与 4000 之间。存储大小是n字节的两倍 |
nvarchar(n) | 变长 | 处理unicode数据类型(所有的字符使用两个字节表示) | n的值必须介于 1 与 4000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零 |