2010-07-01 58 views
1

我想弄清楚如何用T-SQL解析一個地址,我在T-SQL上吮吸。我面臨的挑戰是,用T-SQL解析一個地址

我有一個名爲位置的表定義如下:

- City [varchar(100)] 
- State [char(2)] 
- PostalCode [char(5)] 

我的UI有一個文本框,用戶可以在輸入一個地址,該地址可以是形式。基本上任何東西(我知道,)。不幸的是,我無法改變這個UI。無論如何,文本框的值被傳遞到負責解析地址的存儲過程中。我需要接受用戶輸入的內容,並從與他們的輸入相關的位置表中獲取PostalCode。對於我的生活,我無法弄清楚如何做到這一點。有這麼多案件。例如,用戶可以輸入以下內容之一:

  • 芝加哥,伊利諾伊
  • 芝加哥,IL 60601
  • 芝加哥,IL,60601
  • 芝加哥,IL 60601 USA
  • 芝加哥,伊利諾伊,60601 USA
  • 芝加哥IL 60601 USA
  • 紐約NY 10001 USA
  • 紐約,NY 10001,USA

你明白了。有很多情況。我無法在網上找到任何解析器。我一定不能正確看待。有人可以請我在線解析器或解釋如何做到這一點?我願意爲這個問題提供解決方案,但我找不到任何東西,我感到震驚。

回答

2

也許CLR函數可能是比tsql更好的選擇。查看http://msdn.microsoft.com/en-us/magazine/cc163473.aspx瞭解使用正則表達式將一些非常複雜的字符串輸入解析爲表值結果的示例。現在你到創意,你與你的正則表達式匹配討好,但下面的正則表達式應該讓你開始:

(.*?)([A-Z]{2}),? (\d+)(USA)?$ 

如果你不願意使用CLR函數,也許你已經在呼叫系統正則表達式的功能,像ASP.Net或PHP。