VARCHAR(n)和VARCHAR(2^n)之间有什么优势吗?

10 浏览
0 Comments

VARCHAR(n)和VARCHAR(2^n)之间有什么优势吗?

我看到一些开发者将字段定义为VARCHAR(50)/VARCHAR(100),而其他开发者将字段定义为VARCHAR(64)/VARCHAR(128)/VARCHAR(256)。\n除了个人偏好之外,创建VARCHAR字段时使用2^n数字来指定字段长度是否有其他原因?假设这两种字段长度都可以支持输入的数据。

0
0 Comments

在使用VARCHAR类型时,我们可以指定列的最大长度。有人问到,使用VARCHAR(n)和使用VARCHAR(2^n)有什么区别。

实际上,这两种方式没有优劣之分,都只是定义了存储字符串的最大长度。然而,有人对此持有不同的观点。他认为,列的长度是一个隐含的约束条件。通过向上取整,你放宽了约束条件,可能会对数据完整性产生影响。

举个例子,假设我们有一个用来存储美国邮政编码的列。邮政编码可以是5位或10位,所以varchar(10)是合理的选择。但是,如果你向上取整到最近的2的幂次方,你会得到一个varchar(16)。现在,你可以添加最多16个字符长度的数据。但是,11到16个字符之间的任何数据都是无效的,应该被拒绝存入数据库。

当然,如果你知道列的长度应该是多少,那么设置一个合理的最大长度是有意义的。然而,本文问到的是varchar(100)和varchar(128)之类的长度比较,所以可以相对安全地假设这些列设置了一个“安全”的长度,以防止截断错误等问题。

0