美国邮政编码的最佳列类型是什么?

时间:2013-04-05 21:14:32

标签: mysql int varchar

我想在MySQL数据库中存储邮政编码(在美国境内)。 保存空间是首要任务。这是使用VARCHAR的更好选项 - 限制为最大长度为6位或使用INT或使用MEDIUM Int。邮政编码不会用于任何计算。邮政编码将用于插入(一次),更新(如果需要)和检索 - 一次(但可以多次)。

哪个更好的选择在这里使用 VARCHAR或INT或MEDIUM在MYSQL ?请提出其他建议吗?

4 个答案:

答案 0 :(得分:18)

将邮政编码存储为数字值存在一些问题。

  1. 邮政编码有扩展名,意思是12345-6789。您不能将破折号存储在数值数据类型中。
  2. 有许多邮政编码以零开头,如果将其存储为int,则会丢失前导零。
  3. 您不需要添加/减去等邮政编码或使用数字函数。
  4. 我会将邮政编码存储为varchar(5)varchar(10)

    作为旁注,我不确定为什么要选择varchar(6),当标准邮政编码为5或10时,您是否有理由选择不寻常的长度?

答案 1 :(得分:6)

我通常使用MEDIUMINT(5) ZEROFILL获取5位邮政编码。这会保留任何前导0,它只使用3个字节,其中VARCHAR(5)将使用6.这假设您不需要扩展邮政编码,其中包含短划线和4个额外数字。如果您决定使用文字类型,我会使用CHAR(5)代替VARCHAR(5),因为如果数据总是长5个字符会更好。

答案 2 :(得分:4)

邮政编码总是5个字符,因此您需要CHAR数据类型,而不是VARCHAR。

因此,您的选择

CHAR(5)

MEDIUMINT (5) UNSIGNED ZEROFILL

第一个每个邮政编码需要5个字节。

第二个邮政编码只需3个字节。对于带有前导零的邮政编码,ZEROFILL选项是必需的。

因此,如果空间是您的首选,请使用MEDIUMINT。

答案 3 :(得分:1)

我建议使用VARCHAR数据类型,因为在某些国家/地区,邮政编码用作字母数字,而在其他地方用作整数。所以我们不能使用整数来全局使用。此外,邮政编码可以从零开始,如001101,所以在这种情况下,如果我们采用数据类型整数,那么前导零将丢失,因此我们无法传递实际的邮政编码。