您是否可以在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已经转换为XXXXX-XXXX或0XXXX-XXXX的格式,然后上传。只是想使它自动化,而不必担心缺少一个Zip以及运输错误。

最佳答案

这将适用于美国邮政编码。

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;


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

关于mysql - 将邮政编码转换为邮政编码+ 4 MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20222937/

10-15 22:02