A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数据库char 和nchar 、varchar 和nvarchar 有什么区别啊?

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

4 个回复

倒序浏览
你在数据库里创建一个表,然后添加几个字段,分别设置这四个属性,可定能发现其中的差别
比方说定义长度都为10,你输入的都是“123”四个类型的值互不相同
char:123+7个空格
nchar:123+7个空格
varchar:123
nvarchar:123
有没有N就是能不能识别汉字的区别

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。
VARCHAR存储变长数据,但存储效率没有CHAR高,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么"+1"呢?这一个字节用于保存实际使用了多大的长度。
NCHAR、NVARCHAR从名字上看比前面l两种多了个"N"。和char、varchar比较起来,nchar、nvarchar最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1、char(n)是固定长度的普通编码字符串类型。当实际字符串所需空间小于N时,系统会自动在后边不空格。例如:char(4),存储数字1,显示结果如“1+++”,“+”代表空格。
2、varchar(n)可变长度的字符串类型,存储数字1,显示结果如“1”,没有空格了。varchar(max)可以存储我们日常的最大需求。
3、nchar(n)是固定长度的统一编码字符串类型。
4、nvarchar(n)是可变长度的统一编码字符串类型.存储(中文、日文等)多用

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
1, char:对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节,CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。

2, Varchar类型::变长型字符数据类型,存储最长长度为8,000 个字符。Varchar的类型不以空格填满,比如varchar(100),但它的值只是"haha",则它的值就是"haha"。而char 不一样,比如char(100),它的值是"haha",而实际上它在数据库中是"haha"(haha后共有96个空格,就是把它填满为100个字节)。由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!

3, nvarchar:  包含   n   个字符的可变长度   Unicode   字符数据。n   的值必须介于   1   与   4,000   之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar   在   SQL-92   中的同义词为   national   char   varying   和   national   character   varying。

4, 对于varchar来说,一般适用于英文和数字,Nvarchar适用中文和其他字符,其中N表示Unicode常量,可以解决多语言字符集之间的转换问题。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马