Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 美国邮政编码的最佳列类型是什么?_Mysql_Int_Varchar - Fatal编程技术网

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

Mysql 美国邮政编码的最佳列类型是什么?,mysql,int,varchar,Mysql,Int,Varchar,我想在MySQL数据库中存储邮政编码(美国境内)保存空间是优先事项。使用VARCHAR(最大长度限制为6位)或使用INT或使用MEDIUM INT哪个选项更好。邮政编码不会用于任何计算。邮政编码将用于插入(一次)、更新(如果需要)和检索-一次(但可以不止一次) 在MYSQL中使用VARCHAR、INT或MEDIUM哪个更好?请提供其他建议?将邮政编码存储为数字值存在一些问题 邮政编码有扩展名,这意味着它们可以是12345-6789。不能在数字数据类型中存储破折号 有许多邮政编码以零开头,如果将其

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


在MYSQL中使用VARCHAR、INT或MEDIUM哪个更好?请提供其他建议?

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

  • 邮政编码有扩展名,这意味着它们可以是
    12345-6789
    。不能在数字数据类型中存储破折号
  • 有许多邮政编码以零开头,如果将其存储为int,则会丢失前导的零
  • 您不能添加/减去等邮政编码,也不能对其使用数字函数
  • 我会将邮政编码存储为
    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个字节。零填充选项对于带前导零的邮政编码是必需的


    因此,如果您优先使用空格,请使用MEDIUMINT。

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

    可能重复的美国邮政编码可以包含9位数字和一个连字符,而不仅仅是5位数字。如果假定邮政编码的长度,则必须准备在邮政编码发生变化时更改列类型。