2012-04-06 105 views
1

在一個用C#編寫的物流軟件中,我需要檢查給定的郵政編碼是否在數據庫的一個範圍之間。英國郵編/郵政編碼範圍計算

對於德國來說

範圍:47000-48000 鑑於郵編:47057 結果:真

對於數字郵政編碼,這是正常的。但是英國的郵政編碼呢? W11 2BQ是來自倫敦的示例郵政編碼。

其中一個基本思想是,將郵政編碼轉換爲數字,方法是將每個字符轉換爲ASCII碼,並簡單地從左向右書寫。

所以

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

所以一個簡單的郵遞區號成爲一個非常大的數量,並且擾亂我。英國郵政編碼可能會有所不同(最多8個字符),所以這使得數字更大。

我使用sql server來檢查給定的郵政編碼是否在範圍內。

是否有任何官方技術來處理英國郵政編碼範圍計算?

最佳, 阿爾珀

+1

你將不得不找出你的數據庫中的「範圍之間」是什麼(這些範圍是由別人定義的?),並實現它。 – 2012-04-06 20:16:36

回答

0

我不認爲郵政編碼轉換成ASCII是一個好主意。原因很明顯。如果你有一個像1210121這樣的ASCII轉換值(僅僅是一個例子),問題是分離爲(12)(10)(121)或(12)(101)(21)。這似乎是很多工作的收益。

雖然,你不能使用SQL?

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

注意:您可以從子查詢中獲取郵政編碼值。

0

'郵政編碼'是一個完全任意的系統,而不是試圖對它進行編碼 - 除非你的目標是編寫一個全面的郵政編碼理解庫 - 我強烈建議尋找/支付/竊取可以做的圖書館你在問什麼。

如果有幫助,英國郵政碼的基本規則是(據我從那些記住我看到):

[AZ] {1,2} - 2字符代碼表示排序長效製劑在當地 \ d - 的排序車廠的管轄權 [強制性空間]細分\ d [AZ] {2} - 用於通過一組10-100地址

它止跌佔據的連續區域的字母數字代碼如果我的總結錯誤/不完整,我不會感到驚訝。我所見過的所有郵政編碼均採用我提到的形式,但我不知道實際的規則,因此可能會有其他格式的其他規則。這只是爲了對系統的性質進行廣泛的評估。

0

GeoNames Web Service可能是一個很好的開始。應該可以通過他們的API以某種方式驗證郵政編碼。我想你可以導出數據庫,如果你想寫出自己的驗證邏輯。