在这样的表格中:
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
,用户需要找到一个电话号码(ex 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.但是需要的是ID 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 :(得分:1)
在MySQL中,“+”完全是算术运算符。使用CONCAT()
函数来连接字符串:
....WHERE REPLACE(ph_number, ' ', '') LIKE CONCAT('%', REPLACE('51231234', ' ', ''), '%')