MyBatis Plus like模糊查询特殊字符_、\、%

在MyBatis Plus中,使用like查询特殊字符_,\,%时会出现以下情况:

1、查询下划线_,sql语句会变为"%_%",会导致返回所有结果。在MySQL中下划线“_”表示匹配单个字符,所以结合后“%_%”就表示匹配所有字符了。

2、查询百分号%,sql语句为“%%%”,也会导致返回所有结果。

3、查询反斜杠\,sql语句是“%\%”,反斜杠表示转义,导致不会查询到包含字段中有\的行。

解决方法

解决方案就是对这三个特殊字符进行转义,示例

public static String escapeSqlSpecialChars(String str){
if(StringUtils.isNotBlank(originalStr)){
str= str.replaceAll("\\\\", "\\\\\\\\");
str= str.replaceAll("_", "\\\\_");
str= str.replaceAll("%", "\\\\%");
}
return str;
}

版权声明:著作权归作者所有。

相关推荐

Elasticsearch使用pattern_replace过滤器忽略查询里的特殊字符

假设elasticsearch的一个字段存储了包含字母,数字以及特殊字符的字符串作为值,如ABC-123-456。现在用户输入以下字符希望能匹配此值:完全匹配:ABC-123-456忽略特殊字符:ABC123456小写且忽略特殊字符:abc123456混有其他特殊字符串:Ab.c-123,456这里可以使用pattern_replace过滤器以及自定义一个分析器来处理。1、定义pattern_re

C#对DataTable做LINQ查询

我们是不能直接对DataTable做LINQ查询,DataRowCollection是没有实现IEnumerable<T>。有一些方法可以间接实现对DataTable执行LINQ查询。AsEnumerable()使用DataTable的扩展AsEnumerable(),把DataTable转换为IEnumerable<DataRow>。var results&nb

MyBatis执行MySql批量插入数据

MySQL批量插入数据语法为:insert into my_table(field1, field2, field3) values ("f1_vaule1","f2_vaule1","f3_vaule1"), ("f1_vaule2","f2_vaule2"

Sql Server使用查询语句更新数据

Sql Server支持在一个sql语句里使用查询的数据更新表。简单更新简单的使用一个表的数据更新另一个表。UPDATE    table_a  SET    table_a.col1=table_b.col1 FROM    table_b  WHERE table_

Python:查询列表给定元素的索引

单一索引列表的index()函数返回列表里第一次遇到给定元素的索引。>>> ["a", "b", "c"].index("b") 1 多个索引如果需要返回给定元素的所有索引,则要遍历列表:indexes = [index for i