mysql - 为什么 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?谁能在这里澄清一下?
谢谢。
解决方案
CHAR
当您读取值时,用于存储 a 的填充将被透明地删除。SQL Server 看到填充并进入“那是填充;用户不想要那个”,所以不给你。它非常聪明。
一些实现使用空字节。其他人(iirc Microsoft 的 T-SQL,虽然这可能只是我的想象)使用0x20
字节。需要注意的重要一点是,所有空间都已用完,无论您是否使用它来存储任何数据。如果您的字符串有时是2000000
字符长但通常是6
字符长,请使用VARCHAR
.
推荐阅读
- c - 希伯来字符在 HEX 中翻译为“FFFF”
- javascript - 如何使我的 Google Apps 脚本功能在单元格输入上工作?
- java - 如何从服务发送停机消息以在移动应用程序中使用它
- authentication - Tapkey 令牌交换返回 400 错误请求 invalid_grant
- mysql - MySQL和Oracle之间的EF Code-First数据类型冲突
- react-native - React Native Realm 在 deleteAll 后没有释放内存
- async-await - FastAPI 等待任务行为
- r - http_keepalive_timeout(Shiny Server)参数的实际意义是什么?
- php - functions.php 中的 wordpress get_search_query() 为空
- flutter - Authorization_RequestDenied , message : 权限不足,无法完成操作