首页 > 解决方案 > 为什么 CHAR 在 MySQL 中没有填充

问题描述

I am looking at the difference about CHAR vs VARCHAR

据说CHAR是固定长度,VARCHAR是可变长度。插入数据时,CHAR字段会有padding,但是今天我在MYSQL(version5.6.40)做了一个小测试,没有发现CHAR字段有padding

mysql> create table temp(
-> City CHAR(10),
-> Street VARCHAR(10));

select length(city),length(street) from temp;

length(city) | length(street)
|         4  |              6 |

假设长度(城市)应该得到 10?谁能在这里澄清一下?

谢谢。

标签: mysql

解决方案


CHAR当您读取值时,用于存储 a 的填充将被透明地删除。SQL Server 看到填充并进入“那是填充;用户不想要那个”,所以不给你。它非常聪明。

一些实现使用空字节。其他人(iirc Microsoft 的 T-SQL,虽然这可能只是我的想象)使用0x20字节。需要注意的重要一点是,所有空间都已用完,无论您是否使用它来存储任何数据。如果您的字符串有时是2000000字符长但通常是6字符长,请使用VARCHAR.


推荐阅读