2012-11-05 33 views
2

我有一個表phone列。它的手機看起來像這樣+1(123)456-3780。 如果在搜索字段用戶輸入「35」我應該給他的手機的所有用戶:從MYSQL數據庫搜索電話號碼

+3 (534) 000-1010 

+1 (350) 000-9090 

+1 (003) 534-2343 

+1 (001) 223-5323 etc. 

我試圖做這樣的事情

SELECT * FROM `mytable` WHERE `phone` LIKE '%3%5' 

但這不是最好的解決辦法,東陽查詢獲得其他電話,如+3(000)000-500。

我想使用RLIKE或類似的東西,但不知道如何創建所需的正則表達式,它應該看起來如何?

回答

2

你需要一個[() -]*每個輸入字符之間:

SELECT * FROM `mytable` 
WHERE `phone` REGEXP '3[() -]*5' 

這允許您標點數字「串」,但沒有別的裏面存在。

+0

或者只是一個非數字的類中,由於輸入是自由形式。 –

+1

任何帶有不同標點符號的輸入都是無效的(無論它是否在OP代碼中進行了實際驗證),因此我希望所有查找都會失敗。 –

-1

REGEXP '^(.{2})+(\.{4}[-].{4})$'這種模式是電話號碼與()

例如:(00)0000-0000