数据库中char和nchar的区别,分别什么时候用,什么意思,求解释。

如题所述

1、字节不同

char类型是一个字节char(8)只能存8字母;

nchar类型是双字节nchar(8)能存8个汉字;

2、占据空间不同

CHAR、CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10);

那么不论存储的数据是否达到了10个字节,都要占去10个字节的空间;

3、使用条件不同

如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char;能确定长度又不一定是ansi字符或者,那么用nchar;

对于超大数据,如文章内容,使用nText;其他的通用nvarchar。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-13
对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。
1.有var前缀的,表示是实际存储空间是变长的,varchar,nvarchar
所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。
2.n表示Unicode字符,即所有字符都占两个字节,nchar,nvarchar
字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。
3.基于以上两点来看看字段容量

char,varchar

最多8000个英文,4000个汉字

nchar,nvarchar

可存储4000个字符,无论英文还是汉字

4.使用(个人偏好)
a.如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char
b.能确定长度又不一定是ansi字符或者,那么用nchar;
c.对于超大数据,如文章内容,使用nText
d.其他的通用nvarchar追问

ansi是指英文字母这些?

本回答被提问者和网友采纳