sql - VARCHARS : 2, 4、8、16 等?还是 1、3、7、15 等?

标签 sql mysql storage limit varchar

我看到一直使用 VARCHAR(255) 而不是 VARCHAR(256),但我也看到使用 VARCHAR(16) 而不是 VARCHAR(15)。这对我来说似乎不一致。如果一个额外的字节被用来存储 VARCHAR 的长度,这条规则难道不应该也适用于更小的长度,比如 2、4、8 变成 1、3、7 吗?

还是我完全错过了什么?

换句话说,如果我有一个我知道永远不会超过 12 的数字,我应该继续使用 VARCHAR(15) 还是 VARCHAR(16) 来代替?因为它使用与 VARCHAR(12) 相同的空间量?如果是这样,我应该使用哪一个? 15 还是 16?当我接近 256 时,这条规则会完全改变吗?

我同时使用 MySQL 和 SQL,具体取决于项目。

最佳答案

In other words, if I have a number that I know will never be above 12, should I just go ahead and use a VARCHAR(15) or VARCHAR(16) instead?

不!使用 varchar(12)(如果长度相当恒定,甚至可以使用 char(12))。

曾几何时,varchar 类型在某些系统上被限制为 255 个字符 (including MySql prior to 5.0.3),因为存储的第一个字节指示字段的长度。鉴于此限制,想要允许合理数量的文本的开发人员会选择 255,而不是完全使用不同的数据类型。

但是如果您知道数据的大小,则一定要为数据库使用该大小。

关于sql - VARCHARS : 2, 4、8、16 等?还是 1、3、7、15 等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1224226/

相关文章:

sql - fatal error : could not create shared memory segment: Invalid argument

mysql - Codeigniter SQL 查询无法在 WHERE 子句中使用特殊字符

android - 如何在 Android 上保存临时数据?

storage - Laravel Storage 门面和检索文件

php - mySQL TIME 函数和时区

sql - CASE 和 WHEN SQL

mysql - 如何在 MySQL 中查找重复值和更新值

MySQL Workbench 保存数据库

php - 如何在 PHP 中改进以下代码

html - 如何在屏幕上打印用户输入的数据