首先要确定mysql版本,一般一个汉字2个字节,50即可存25个汉字。
4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)
5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。
varchar特点
1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。
2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。
3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
以上内容参考:百度百科-varchar
sqlserver数据库varchar(40)能存放20个汉字。
sqlserver数据库中,英文字符需占用一个字节存储,汉字和其他非英文字符,需占用两个字节存储。向一个长度为40个字符的varchar型字段中输入汉字,最多可输入20个汉字。当从这个字段中取出数据时,数据其长度为20个汉字,40个字符。
扩展资料:
VARCHAR(M)比CHAR更加的灵活,同样用于表示字符数据,但是VARCHAR可以保存可变长度的字符串。其中M代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,不需要为剪掉数据中多余的空格而 *** 心。它可以比CHAR型字段占用更少的内存和硬盘空间。当数据库很大时,这种内存和磁盘空间的节省会变得非常重要。
参考资料来源:
百度百科——varchar
百度百科——字长
nchar与char是相似的,nvarchar与varchar是相似的。char类型:
对英文(ascii)字符占用1个字节,对一个汉字占用2个字节,char存储定长数据很方便,char字段上的索引效率级高,比如定义
char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不够的字符用空格去填。因为是固定长度,所以速度效率高。
varchar类型:varchar
的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"
而char
不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian
"(qian后共有96个空格,就是把它填满为100个字节)。
由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
varchar存储变长数据,但存储效率没有char高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为
varchar(10)是最合算的。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。
nchar类型和nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ascii)字符都占用2个字节,对一个汉字也占用两个字节,所有的字符都占用2个字节。
关于长度与汉字
varchar(100)/char(100)能存50个汉字,nvarchar(100)/nchar(100)能存100个汉字。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)