一、背景
在基于 mysql 数据库前提下,使用 like 关键字进行模糊查询时,% 和 _ 单独出现时,会被认为是通配符,这个查询条件就会失效。如下所示:
二、需求
如果我们就想查询出某个包含 "_"(下划线)的字段,怎么办呢?
2.1 方式一
在 Navicat 中进行查询,只需要加一个转义字符 " \ " 进行转义即可:
2.2 方式二
在 Navicat 中进行查询,使用 escape 关键字
2.3 方式三
在 mybatis 中使用,这种情况适用于用户输入的查询条件包含 _ 或者 % 等特殊符号, 通过使用 escape 定义转义符来实现,先将用户输入的 _ 或者 % 加一个转义字符 "/"
然后在 mybatis 的配置文件中使用 escape 标识出 "/" 为转义字符即可
<if test="roleName != null and '' != roleName">
AND ROLENAME like '%${roleName}%' ESCAPE '/'
</if>
2.4 说明
这里面的转义符,可以是任意字符,不光光是 "/",只需要在 escape 后面标识出来就可以,如下所示,* 也是可以作为通配符查出满足条件的数据: