【发布时间】:2014-10-14 01:05:53
【问题描述】:
您能否在 MySQL 中将邮政编码转换为 Z+4?我遇到了一个问题,我的一些邮政编码有多种数字。
例如,我们运送到波多黎各,他们的邮政编码以两个零开头:00XXX
这只会给我三个数字“XXX”的文本,没有前导零。
对于缅因州等州,邮政编码以一个零开头:0XXXX
这只会给我四个数字“XXXX”。
对于美国的大多数州,我会得到一个标准的五字符邮政编码,这很好。但是,如果客户也输入了他们的 Z+4 怎么办?我会有 9 个字符。
当美国东北部的客户给出 Z+4 时,情况变得更加复杂。 (0XXXX-XXXX)
所以我的邮政编码字段会经常使用以下类型。
波多黎各 (XXX);
美国东北部(XXXX);
普通邮编 (XXXXX);
美国东北部 + 4 (XXXXXXXX);
普通邮编 + 4 (XXXXXXXXX)
我无法弄清楚如何转换它们。我知道它应该是什么数据类型。任何建议都会有所帮助。
另外,如果我想要邮政编码中的“-”+ 4 怎么办?这样会是 XXXXX-XXXX 还是 0XXXX-XXXX?
目前我正在使用 varchar(10),但是当我导入它时,无论如何都会从我的文本文件中删除前导零。在这种情况下,我必须将 Zip 转换为 XXXX-XXXX 或 0XXXX-XXXX 的格式,然后上传。只是想让这个过程自动化,而不必担心缺少 Zip 和运输错误。
【问题讨论】:
-
这是一次性的事情还是你想在插入/更新时这样做?
-
您应该使用
Char(9)或VARCHAR(9)。邮政编码不是数字,并且使用将删除前导零 (0) 的数据类型,如您所指出的。由于缅因州的有效邮政编码是 5 个以"0"开头的字符,因此数字类型永远不允许您存储它;字符类型列将保留前导"0"。 -
我们不断接到订单,一天几千。我目前一直在通过我制定的 excel 公式转换它们,但是我在 excel 中遇到了 8 个字符的 Zips(如美国东北部 + 4)的问题。我想要一种更自动化的方法来避免任何错误。
-
邮政编码应存储为
varchar(6),以适应美国、墨西哥和加拿大的邮政编码。 Zip+4 部分应单独存储在varchar(4)字段中。
标签: mysql