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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋超 中级黑马   /  2012-3-23 14:24  /  1617 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

varchar nvarchar和char(n)的区别?

3 个回复

倒序浏览
Char(n)是长度为n个字节的定长的非unicode的字符数据。N为一个介于1到8000之间的值。其存储大小为输入数据的实际字节长度,而不是n个字节。如果你输入的实际字节长度少于n,那么其他位置会被空格填充。在数据存储中英文字母和数字占一个字节,汉字占两个字节。那么char(n)最多可以存储n个英文字母或数字,或者n/2个汉字。
(2). Varchar(n)是长度为n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于1 和8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。
区别是:char(n)是定长的,varchar(n)是变长的。
(3). Nvarchar(n) 包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍. 在数据存储中英文字母,数字,汉字都是占两个字节。
注:如果你所存数据长度基本一致,建议使用char型。这样检索速度快,但是提取的时候要注意用trim()函数剔除所存数据两边的空格。 如果你所存数据长度差异较大,可以使用varchar或者nvarchar。如果你想较好的支持多语言的话,最好使用nvarchar。使用nvarchar可以减少字符转换问题,防止某些情况下乱码的出现。
回复 使用道具 举报
char(n)         定长        索引效率高 程序里面使用trim去除多余的空白        n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节
varchar(n)        变长        效率没char高 灵活        n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节
text(n)        变长        非Unicode数据         
nchar(n)        定长        处理unicode数据类型(所有的字符使用两个字节表示)        n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍
nvarchar(n)        变长        处理unicode数据类型(所有的字符使用两个字节表示)        n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零
ntext(n)         变长        处理unicode数据类型(所有的字符使用两个字节表示)         

回复 使用道具 举报
楼主这个问题几天前已经有人在这里问过了,楼主下次提问问题的时候先在论坛搜索一下看看能不能找到答案,如果不能然后再提问。
char      定长
varchar   变长,ASCII字符只占1个字节
nvarchar  变长Unicode,字符都占2个字节
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马