2016-01-12 32 views
0

在像這樣的表:組合「取代」,並在SQL查詢中使用通配符

ID| ph_number 
----------- 
1 | 51231234 
2 | 5123 1234 
3 | 51231234; 61231234 
4 | 5123 1234; 61231234 
5 | 5123 1934; 6123 1234 
6 | 5123 1234; 6123 1234 
7 | aargh; 5123 1234; 6123 1234 

,用戶需要找到一個電話號碼(如51231234),不知道哪裏的空間是,或者如果有很多號碼每場。

SELECT ID, ph_number FROM test WHERE REPLACE(ph_number, ' ', '') LIKE REPLACE('51231234', ' ', '') 

返回ID爲1和2,或

SELECT ID, ph_number FROM test WHERE ph_number LIKE '%51231234%' 

返回ID爲1和3,但需要有編號1,2,3:我可以用這樣的查詢找到不帶空格的數字,4,6和7.我無法組合這兩個查詢。已嘗試:

SELECT ID, ph_number FROM test WHERE REPLACE(ph_number, ' ', '') LIKE ('%' + REPLACE('51231234', ' ', '') + '%') // returns 1 & 2 
SELECT ID, ph_number FROM test WHERE REPLACE(ph_number, ' ', '') LIKE '%' + REPLACE('51231234', ' ', '') + '%' // returns ERROR 

我怎麼能做到這一點?我不想告訴用戶他們在場上不能有多個號碼。

+0

可能是您想使用'concat()'連接字符串嗎? http://sqlfiddle.com/#!9/18ff4/4/0 – mustaccio

+0

哦..是的,這是伎倆,謝謝!把它放在一個答案請:) – Konservin

+0

隨意回答你自己的問題 – mustaccio

回答

1

在MySQL中,「+」僅僅是算術運算符。使用CONCAT()函數連接字符串:

....WHERE REPLACE(ph_number, ' ', '') LIKE CONCAT('%', REPLACE('51231234', ' ', ''), '%')