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


在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,'字符類型','字符類型');

結果集如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM