2011-04-19 37 views
0

我在ASP.NET MVC 3中有一個項目和一個mysql數據庫,它包含一個電話號碼的字符串值表(這個電話號碼可以存儲爲123 456-789或12345 6789或123456789或任何用戶輸入他的號碼的方式)和其他表格以及該用戶的關鍵字數據。 事情是,我有一個搜索,將在關鍵字表(全文表)爲用戶找到,但我正在寫一個方法,在手機表中搜索,如果搜索查詢匹配某些正則表達式。 我有2個問題: - C#代碼端的正則表達式可能會如何執行(SearchByKeyword或SearchByNumber)? - 使用相同的正則表達式,我認爲,我必須做mysql查詢在電話表中搜索...我怎麼能做到這一點?用mysql只搜索數字

我希望我解釋得很好,對不起,如果我的英語有點不好。

回答

1

當你採集數據,以規範其保存的格式,也就是說,它是最好的:

111-111-1-111-11 
1111-1111-1111 
111111111111 
1-1-1-1-1-1-1-1-1-1-1-1 

一切都將保存爲

111111111111 

然後,您可以做一個簡單的查詢功能:

SELECT * FROM tblNumbers WHERE number LIKE '%111%' 
+0

有但是,如果某人有國際電話號碼,例如+61 3 9898 1122,或者他們有一個必須在語調之後撥號的分機,例如1800-634-999分機895,那麼情況如何呢?數字保存在數據庫中時可能會丟失重要信息。 – 2011-04-19 15:30:59

+0

@Haz最好將這些數據標準化並將它們存儲在關聯的記錄中。 – 2011-04-19 15:33:03

+0

這裏的事情是,我不想知道存儲手機的最佳方式,我只想知道我是否可以做我所要求的。因爲我已經有了這個邏輯,所以我不能改變它。 – 2011-04-19 15:42:03

1

我會說它是一個壞主意,從輸入 - >直接向查詢變量提供電話號碼。

更好的方式是:

input -> parser, error check procedure -> MySQL query request. 

,並加入您的電話號碼查詢之前 - 你可以刪除所有多餘的符號,如(,), - , 「空間」,等等。