我想在MySQL数据库中存储邮政编码(在美国境内)。 保存空间是重中之重。这是使用VARCHAR的更好选择 - 限制为最大长度为6位或使用INT或使用MEDIUM Int。邮政编码不会用于任何计算。邮政编码将用于插入(一次),更新(如果需要)和检索 - 一次(但可以多次)。什么是美国邮政编码的最佳列类型?
哪个更适合在这里使用VARCHAR或INT或MEDIUM IN MYSQL?请提出其他建议吗?
我想在MySQL数据库中存储邮政编码(在美国境内)。 保存空间是重中之重。这是使用VARCHAR的更好选择 - 限制为最大长度为6位或使用INT或使用MEDIUM Int。邮政编码不会用于任何计算。邮政编码将用于插入(一次),更新(如果需要)和检索 - 一次(但可以多次)。什么是美国邮政编码的最佳列类型?
哪个更适合在这里使用VARCHAR或INT或MEDIUM IN MYSQL?请提出其他建议吗?
将邮政编码作为数字值存储时存在一些问题。
12345-6789
。您不能在数字数据类型中存储短划线。我会存储一个邮政编码为varchar(5)
或varchar(10)
。
作为便笺,我不确定为什么你会选择varchar(6)
,当标准邮政编码为5或10时,您是否有理由选择不寻常的长度?
我通常使用MEDIUMINT(5) ZEROFILL
代替5位数的邮政编码。这保留了任何领先的0
s,并且它只使用3个字节,其中VARCHAR(5)
将使用6。这假定您不需要扩展邮政编码,其具有短划线和4个额外数字。如果您决定使用文本类型,我会使用CHAR(5)
而不是VARCHAR(5)
,因为如果数据总是5个字符长,则更好。
邮政编码总是5个字符,因此您需要一个CHAR数据类型,而不是VARCHAR。
选项有因此
CHAR(5)
MEDIUMINT (5) UNSIGNED ZEROFILL
第一取每邮政编码5个字节。
第二个每个邮政编码只需要3个字节。 ZEROFILL选项对于带有前导零的邮政编码是必需的。
因此,如果空间是您的首选,请使用MEDIUMINT。
我会建议,使用VARCHAR数据类型,因为在一些国家,邮政编码用作字母数字和其他地方作为整数。所以我们不能使用整数用于全局使用。此外,邮政编码可能从零开始,如001101
,所以在这种情况下,如果我们采用数据类型整数,则导致零将丢失,因此我们无法传递实际的邮政编码。
可能重复[在数据库中使用整数列来存储美国邮政编码是个好主意吗?](http://stackoverflow.com/questions/893454/is-it-a-good-idea-使用的安整数列换存储-US-拉链码-IN-A-databas) – Taryn 2013-04-05 21:25:23