为什么CHAR在MySQL中没有填充

时间:2018-11-28 21:49:20

标签: mysql

I am looking at the difference about CHAR vs VARCHAR

据说CHAR是固定长度的,而VARCHAR是可变长度的。当我们插入数据时,CHAR字段将具有填充,但是今天我在MYSQL(version5.6.40)中做了一个小测试,我没有发现CHAR字段具有填充

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

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

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

假设长度(城市)应为10?谁可以在这里澄清?

谢谢。

1 个答案:

答案 0 :(得分:0)

在读取值时,将透明删除用于存储CHAR的填充。 SQL Server看到填充,然后“填充了填充;用户不想要填充”,因此也没有将其提供给您。非常聪明。

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