怎么去理解mysql的varcha(3)和char(3)

董哥007 2018-04-03 04:08:21
我最近花了很多心思来了解这2个字段类型,现在对他们的使用,存在疑问。

问题 是这样的。我看到很多专业人士说,char是定长 varchar是变长。这个长度是指存储字符的长度,但是你们看。我实验了一下发现跟这个理论不相符,还是什么的,希望高手解答。

我先建了一张表
CREATE TABLE `tab` (
`id` int(1) NOT NULL,
`v` varchar(3) NOT NULL,
`c` char(3) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



然后我插入数据
INSERT into tab(v,c) VALUES('ab','ab');



现在根据 所谓的理论 是定长的字段会对于长度不足的值进行空格填充,
那么我现在开始用函数来检查他们的长度
我的sql如下
SELECT v,length(v) vlen,c ,length(c) clen from tab where id=1;



结果发现一样 ,c的长度并没有比v的长。所以怀疑理论不对,或者说大家怎么理解的,我这样实验错了吗?
...全文
327 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-04-03
  • 打赏
  • 举报
回复
手册中说
·         [NATIONAL] CHAR(M) [BINARY| ASCII | UNICODE]

固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。

注释:当检索CHAR值时尾部空格被删除。

显然你的测试是有问题的!

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧