代码改变世界

char 和 varchar

2018-08-26 17:35  冻奶香甜玉米片  阅读(168)  评论(0编辑  收藏  举报

char(5),存储的时候固定5位,不足5位补足5位

varchar(5),存几个是几个,不补

而当你用"select_leng(字段)from 表" 的时候,char会忽略掉字符后的空格,无论是你自己在加入数据时输入在字符后的空格还是储存机制补足的空格,char都不会统计

所以当你存的时候insert t1(name) values("alex ")时,select_leng只会算出4个,且你用where name="alex"也能匹配上

要求select_leng献出char的原形,可以用 SET sql_model="PAD_CHAR_TO_FULL_LENGTH";

 

varchar在存的时候会在头一位用一个byte表示要存数据的长度,取得时候也要先计算要取多少位

所以导致存取速度比较慢,而对比此char直接取你定义的位数,要比varchar快点