MySQL用LIKE特殊字符搜索
SQL的LIKE查询语句中,有一些特殊的字符,需要转换后才能搜索到结果:
- ':用于包裹搜索条件,需转为\';
- %:用于代替任意数目的任意字符,需转换为\%;
- _:用于代替一个任意字符,需转换为\_;
- \:转义符号,需转换为\\\\。
以下是一些匹配的举例。
SELECT*FROM`table`WHERE`title`LIKE'a\'b%'; --搜索a'b... SELECT*FROM`table`WHERE`title`LIKE'a\%b%'; --搜索a%b... SELECT*FROM`table`WHERE`title`LIKE'a\_b%'; --搜索a_b... SELECT*FROM`table`WHERE`title`LIKE'a\\\\%';--搜索a\b...
在PHP代码中,可以用这样的方法批量替换:
functionfilterLike($keyword){ $search=array('\'','%','_','\\'); $replace=array('\\\'','\\%','\\_','\\\\\\\\'); returnstr_replace($search,$replace,$keyword); }
参考资料:
- 关于mysql中特殊字符的使用注意事项
- MySQL5.7ReferenceManual:StringLiterals