Hen*_*nry 13 mysql select wildcard sql-like
我有一个带有phone列的表,其中数据可能在数字之间有空格,点,短划线或+符号.我需要使用忽略所有这些字符的LIKE通配符进行搜索,例如:
不幸的是我无法清理原始表以删除非数字字符并执行简单的SELECT LIKE%...%.
MYSQL具有替换/删除字符串中的字符的功能,但无法在具有widlcarded LIKE的查询中找到使用它们的方法.
任何帮助都感激不尽.
Har*_*ari 33
我看到两种方式:
如果你只允许几个额外的字符,你可以准备一个从这些额外字符中剥离的字符串,你使用LIKE运算符,你通常会
select * from phoneTable where replace(replace(phone, '+', ''), '-', '') LIKE '%123%'
Run Code Online (Sandbox Code Playgroud)
当然,您需要与允许的额外字符数一样多的替换调用
你使用正则表达式,假设你正在搜索模式123
select * from phoneTable where phone REGEXP '.*1[^0-9]*2[^0-9]*3'
Run Code Online (Sandbox Code Playgroud)小智 5
我对零件编号和不需要的字符也有同样的问题。我的解决方案是
SELECT * FROM parts WHERE replace(partnumber, '-', '') LIKE '$searchterm%';
Run Code Online (Sandbox Code Playgroud)