码迷,mamicode.com
首页 > 数据库 > 详细

Mysql中的char与varchar length()与char_length()

时间:2014-04-30 20:31:47      阅读:459      评论:0      收藏:0      [点我收藏+]

标签:http   blog   style   img   c   log   size   t   ext   sp   width   

在mysql中,char和varchar都表示字符串类型.但他们存储和检索数据的方式并不相同.

在表结构定义中声明char和varchar类型时,必须指定字符串的长度.也就是该列所能存储多少个字符(不是字节,是字符).例如:char(10)和varchar(10)都能存储10个字符.

声明为char的列长度是固定的,char的长度可选范围在0-255之间.也就是char最大能存储255个字符.如果该列是utf8编码,则该列所占用的字节数=字符数*3.如果是gbk编码则该列所占用的字节数=字符数*2.

声明为varchar的列长度是可变的,在mysql5.0.3之前varchar的长度范围为0-255,mysql5.0.3之后varchar的长度范围为0-65535个字节.采用varchar类型存储数据需要1-2个字节(长度超过255时需要2个字节)来存储字符串的实际长度.如果该列的编码为gbk,每个字符最多占用2个字节,最大长度不能超过32766个字符.如果该列的编码为utf8,每个字符最多占3个字节,最大字符长度为21845.

总结:

 ① char和varchar最大的不同就是一个是固定长度,一个是可变长度.由于是可变长度,因此存储的是实际字符串再加上一个记录字符串长度的字节。如果分配给char或varchar列的值超过 列的最大长度,则对值进行裁剪.

 ②varchar(M)和char(M),M都表示字符数.varchar的最大长度为65535个字节,不同的编码所对应的最大可存储的字符数不同.char最多可以存放255个字符,不同的编码最大可用字节数不同.

length()与char_length()

length():Return the length of a string in bytes.返回字符串所占的字节数(受编码影响).

char_length():Return number of characters in argument.返回字符串中的字符数.

 

test:

1.建表

create table t_char_test(
id int(11) primary key,
name_char char(10) ,
name_varchar varchar(10) 
)engine=Myisam default charset=utf8;

insert into t_char_test(id,name_char,name_varchar) values (0,‘字符类型‘,‘字符类型‘);

结果集如下:

mamicode.com,码迷

Mysql中的char与varchar length()与char_length(),码迷,mamicode.com

Mysql中的char与varchar length()与char_length()

标签:http   blog   style   img   c   log   size   t   ext   sp   width   

原文地址:http://www.cnblogs.com/heavenyes/p/3699073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!