英国邮编/邮政编码范围计算

时间:2012-04-06 20:12:09

标签: c# zip postal-code

在用C#编写的物流软件中,我需要检查给定的邮政编码是否在数据库的其中一个范围之间。

德国,例如

范围:47000-48000 鉴于邮政编码:47057 结果:是

对于数字邮政编码,没关系。但是英国邮政编码呢? W11 2BQ是来自伦敦的示例邮政编码。

其中一个基本想法是,通过将每个字符转换为ascii代码并从左到右简单地将邮政编码转换为数字。

所以

W11 2BQ - > 87 49 49 32 50 66 81 - > 87,494,932,506,681

所以一个简单的邮政编码变成了一个非常大的数字,这让我感到不安。英国邮政编码的大小可能不同(最多8个字符),因此这会使得结果数字更大。

我使用sql server来检查给定的邮政编码是否在范围内。

是否有任何官方技术可以处理英国邮政编码的范围计算?

最佳, 阿尔珀

3 个答案:

答案 0 :(得分:0)

我认为将邮政编码转换为ASCII不是一个好主意。原因很明显。如果你有一个ASCII转换值,如1210121(只是一个例子),问题是分为(12)(10)(121)或(12)(101)(21)。这似乎是为了获得如此微小的收益而做的很多工作。

虽然,你不能使用SQL ??

 select * from ZIPTable where zipcode IN ('G4543','G3543')

注意:您可以从子查询中获取zipcode值。

答案 1 :(得分:0)

'邮政编码'是一个完全随意的系统,而不是试图对其进行编码 - 除非您的目标是编写一个全面的邮政编码理解库 - 我强烈建议寻找/支付/窃取可以做什么的图书馆你在要求。

如果有帮助,英国邮政编码的基本规则是(据我所记得的那样):

[A-Z] {1,2} - 表示地区排序仓库的2字符代码 \ d - 分类库的管辖范围的细分 [强制性空间] \ d [A-Z] {2} - 由一组10-100个地址占用的连续区域的字母数字代码

如果我的摘要错误/不完整,我不会感到惊讶。我看到的所有邮政编码都是我提到的形式,但我不知道实际的规则,所以可能有其他格式不同的邮政编码。它仅仅是为了对系统的性质进行广泛的评估。

答案 2 :(得分:0)

GeoNames Web Service可能是个好地方。应该可以通过他们的API以某种方式验证邮政编码。如果你想编写自己的验证逻辑,我想你也可以导出数据库。