我想把英国邮政编码存储在数据库中。不带空格存储这些邮政编码是否可以?
我想把英国邮政编码存储在数据库中。不带空格存储这些邮政编码是否可以?
最后三位始终为xyy
x
数字0-9yy
字母A-Z前面的任何内容都是网格参考的第一部分,具有各种格式。
没有空格存储是可以的,因为您可以随时向每个邮政编码字符串添加一个空格 - 启发式算法非常简单。
正如其他一些用户非常有帮助地解释的那样,所有英国邮政编码都有两组数字和字母,由一个空格分隔。空格后面的组始终包含一个数字和两个字母(因此,空格后面始终有三个字符)。空格前面的组将具有两个、三个或四个字符(请参见此维基百科页面)和下面的屏幕截图。
因此,您可以通过在倒数第三个字符之前添加一个空格来重新创建正确的间距。
在R
中,它看起来像这样(但是相同的逻辑也适用于其他语言,如Python
):
#list of example postcodes
postcodes = c("LS176JA", "OX41EZ", "A99AA")
#add space to each postcode in the list of example postcodes
for (postcode in postcodes){
last_three = str_sub(postcode, start = -3)
first_x = str_replace(postcode, last_three, "")
final_postcode = paste0(first_x, " ", last_three)
print(final_postcode)
}
这将返回:
[1] "LS17 6JA"
[1] "OX4 1EZ"
[1] "A9 9AA"
通常情况下,删除空格是安全的。正如其他人所说,如果需要,您可以稍后重新插入空格。Outcode和Incode之间存在空格通常不会影响邮政投递。在英国邮政编码中,您不应该有任何非字母数字字符,因此,如果您看到破折号,可以安全地将其删除。
我为Experian Data Quality工作,如果您的目标是清洁数据,您可能需要考虑使用地址验证Web服务,例如我们的Pro On Demand产品。这将确保您捕获正确的邮政编码,因为它们随时间而变化,并且格式正确地适用于您的数据库。
我们存储邮政编码并接受任何格式的输入,包括有空格或无空格,但是会在数据存储时剥离或更正输入。
我们发现这种方式在将数据用于其他事情时效果更好。
为什么您想要不带空格地存储?
英国邮政编码有多种格式: 格式列表
为什么您无法存储空格?
正如其他人所说,如果这是你想要做的事情,那么删除所有空格并存储它们是没有问题的。就像已经说过的那样,你总是可以在最后三个字符之前加上一个空格来格式化它们。
然而,通常我会以任何合理的格式接收它们,去除所有空格,并将它们存储为带有额外一个空格的形式。存储需求不是问题,并且这样做可以更容易地直接显示出来。你需要在保存之前解决格式问题,所以最好按照需要保存它。