将邮政编码转换为邮政编码+ 4 MySQL

时间:2013-11-26 16:44:09

标签: mysql

您能在MySQL中将邮政编码转换为Z + 4吗?我遇到了一个问题,我有一些有各种数字的邮政编码。

例如,我们运往波多黎各,他们的邮政编码以两个零开头:00XXX
这会给我一个只有三个数字“XXX”而没有前导零的文本。

对于像缅因州这样的州,邮政编码从一个零开始:0XXXX
这只会给我四个数字“XXXX”。

对于美国的大多数州,我会得到一个标准的五个字符的邮政编码,这很好。但是,如果客户也输入了他们的Z + 4怎么办?我会有9个字符。

当美国东北部的客户给出Z + 4时,更复杂的是什么。 (0XXXX-XXXX)

所以我会定期为我的邮政编码字段提供以下类型。

波多黎各(XXX);
美国东北部(XXXX);
普通邮编(XXXXX);
美国东北部+4(XXXXXXXX);
常规Zip + 4(XXXXXXXXX)

我无法弄清楚如何转换它们。我知道它应该是什么数据类型。任何建议都会有所帮助。

另外,如果我想要邮编+ 4中的“ - ”怎么办?这样它将是XXXXX-XXXX或0XXXX-XXXX?

目前我正在使用varchar(10),但是当我导入它时,无论如何都会从我的文本文件中删除前导零。在这种情况下,我必须将Zip转换为XXXXX-XXXX或0XXXX-XXXX的格式,然后上传它。只是想让它自动化,而不必担心丢失Zip并在发货时出错。

1 个答案:

答案 0 :(得分:0)

这适用于美国邮政编码。

SELECT 
CASE WHEN `PostalCode` < 999 THEN CONCAT('00', `PostalCode`, '-0000')
WHEN `PostalCode` < 9999 THEN CONCAT('0', `PostalCode`, '-0000')
WHEN `PostalCode` < 99999 THEN CONCAT(`PostalCode`, '-0000')
WHEN `PostalCode` < 99999999 THEN CONCAT('0',LEFT(`PostalCode`, 4),'-',RIGHT(`PostalCode`, 4)) 
ELSE CONCAT(LEFT(`PostalCode`,5),'-',RIGHT(`PostalCode`, 4)) END as PostalCodeConversion
FROM YourTable;

希望这可以帮助任何需要答案的人。