varchar 和char的区别

whdugh 2015-05-06 11:06:42
mysql> create table vc(v varchar(4),c char(4));
Query OK, 0 rows affected (0.08 sec)

mysql> desc vc;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| v | varchar(4) | YES | | NULL | |
| c | char(4) | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> insert into vc values('ab','ab');
Query OK, 1 row affected (0.03 sec)

mysql> select length(v),length(c) from vc;
+-----------+-----------+
| length(v) | length(c) |
+-----------+-----------+
| 2 | 2 |
+-----------+-----------+
1 row in set (0.00 sec)

mysql> select concat(v,'+'),concat(c,'+') from vc;
+---------------+---------------+
| concat(v,'+') | concat(c,'+') |
+---------------+---------------+
| ab+ | ab+ |
+---------------+---------------+
1 row in set (0.03 sec)

mysql>


这样看varchar与char没有区别啊,为什么长度都是2啊,varchar(4)长度不应该是4 吗?还有varchar不是应该保留空格的吗?这是怎么回事啊
...全文
210 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
whdugh 2015-05-06
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
varchar(4)长度不应该是4 吗?还有varchar不是应该保留空格的吗? varchar(4)是指最长的长度为4,属于变长字段,保留空格的是char
mysql> select length(v),length(c) from vc; +-----------+-----------+ | length(v) | length(c) | +-----------+-----------+ | 2 | 2 | +-----------+-----------+ 1 row in set (0.00 sec) length(v) 不是应该为4吗? mysql> select concat(v,'+'),concat(c,'+') from vc; +---------------+---------------+ | concat(v,'+') | concat(c,'+') | +---------------+---------------+ | ab+ | ab+ | +---------------+---------------+ 应该是这样的结果对吧: mysql> select concat(v,'+'),concat(c,'+') from vc; +---------------+---------------+ | concat(v,'+') | concat(c,'+') | +---------------+---------------+ | ab+ | ab + | +---------------+---------------+
benluobo 2015-05-06
  • 打赏
  • 举报
回复
varchar(4)长度不应该是4 吗?还有varchar不是应该保留空格的吗? varchar(4)是指最长的长度为4,属于变长字段,保留空格的是char
「已注销」 2015-05-06
  • 打赏
  • 举报
回复
然后
select length(a),length(b) from vc;
「已注销」 2015-05-06
  • 打赏
  • 举报
回复
你这样 想
insert  into  vc values('ab ','ab ');

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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