【问题标题】:UK Zip/Postal Code Range Calculation英国邮政编码范围计算
【发布时间】:2012-04-06 20:12:09
【问题描述】:

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

以德国为例

范围:47000-48000 给定邮政编码:47057 结果:真

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

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

所以

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

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

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

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

最好, 阿尔珀

【问题讨论】:

  • 您将不得不找出“介于”对数据库中范围的含义(这些范围是由其他人定义的吗?),然后实施。

标签: c# zip postal-code


【解决方案1】:

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

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

[A-Z]{1,2} - 代表本地分拣站的 2 个字符代码 \d - 分拣站管辖的细分 [必填空间] \d[A-Z]{2} - 由一组 10-100 个地址占用的连续区域的字母数字代码

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

【讨论】:

    【解决方案2】:

    GeoNames Web Service 可能是一个不错的起点。应该可以通过他们的 API 以某种方式验证邮政编码。如果您想编写自己的验证逻辑,我认为您也可以导出数据库。

    【讨论】:

      【解决方案3】:

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

      但是,你不能使用 SQL 吗??

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

      注意:您可以从子查询中获取邮政编码值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多