关于Mysql中正则查询容易出现的错误

之前给某个部门做了一个管理工具,数据库用的是Mysql。其中有一段查询用到了rlike,也就是regexp。

如果查询条件写成如下,是获取不到正确的查询结果的

name rlike 'd2.7*0.4'


正确的形式应当是:

name rlike 'd2\\.7\\*0\\.4'


这是因为在Mysql中,'.','*',还有'(',')','[',']','?','$','!'等字符都是有特殊含义的,他们需要被转义才能被当作其本身。


在php中,可以使用preg_quote函数对其进行处理

function formatRegexp($str)
{
    return mysql_escape_string(preg_quote($str));
}


调用此函数获得的字符串就是正确的查询字符串了。

你可能感兴趣的:(mysql,转义,RegExp,RLIKE)