2

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

以德国为例

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

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

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

所以

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

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

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

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

最好的,阿尔珀

4

3 回答 3

0

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

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

[AZ]{1,2} - 代表该地区分拣站的 2 字符代码 \d - 分拣站辖区的细分 [必填空格] \d[AZ]{2} - 由以下人员占用的连续区域的字母数字代码一组 10-100 个地址

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

于 2012-04-06T20:25:53.147 回答
0

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

于 2012-04-06T20:30:36.380 回答
0

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

虽然,你不能使用 SQL 吗?

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

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

于 2012-04-06T20:22:53.903 回答