模糊查询输入%和_会查询全部的问题
相信每个人都写过这样的的 MyBatis 的 SQL 代码: SELECT * FROM user WHERE NAME LIKE concat('%', concat( '小', '%' )) 查询结果如下: 那么如果将'小'换成 % 呢? 再换成''呢? 没错,它会查询出所有数据,说来惭愧,这也是我一个 5 年 Java 开发程序员才注意到的事情!!!GOD 问题出现了就要解决它,有大佬推荐说 MySQL 可以使用 ngram 进行分词,我不知道是啥也没用过,而且我用的数据库是 Oracle 不过我找到了另外一种既可以在 Oracle 用的也可以在 MySQL 用的解决办法: 首先我们在代码中进行字符串替换: String name = user.getUserName(); if(null!=name && !"".equals(name)){ user.setName(name.replaceAll("\%","\\%").replaceAll("\","\\_")); } 然后修改查询 sql: 为什么图中用的 @?因为 MySQL 用\会报错,只能用两个斜杠\ \ ,但是在 Oracle 中....