我有一个带有phone
列的表格,其中数据可能在数字之间有空格,点,短划线或+符号。
我需要使用忽略所有这些字符的LIKE通配符进行搜索,例如:
不幸的是,我无法清理原始表以删除非数字字符并执行简单的SELECT LIKE%...%。
MYSQL具有替换/删除字符串中字符的功能,但无法找到在带有widlcarded LIKE的查询中使用它们的方法。
非常感谢任何帮助。
答案 0 :(得分:33)
我认为有两种方法可以做到这一点:
如果你只允许一些额外的字符,那么你可以准备一个从这些额外字符中删除的字符串,你可以使用LIKE运算符
select * from phoneTable where replace(replace(phone, '+', ''), '-', '') LIKE '%123%'
当然,您需要与允许的额外字符数一样多的替换调用
您使用正则表达式,假设您正在搜索模式123
select * from phoneTable where phone REGEXP '.*1[^0-9]*2[^0-9]*3'
答案 1 :(得分:4)
我遇到了与partnumbers和不需要的字符相同的问题。 我的解决方案是
SELECT * FROM parts WHERE replace(partnumber, '-', '') LIKE '$searchterm%';