MySQL之模糊查询特殊字符处理方式
作者:完美明天cxp
这篇文章主要介绍了MySQL之模糊查询特殊字符处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
MySQL模糊查询特殊字符处理
模糊查询字段输入一个%,查出了所有数据
SELECT * FROM region_info WHERE region LIKE '%%%';
目标结果应该返回region属性包含%的结果集:
然而(部分结果集):

原因
MySQL有一些特殊字符需要进行转义,模糊查询中%、_是属于匹配规则特殊字符,单引号'和转义字符\也需要处理
解决办法
需要查询内容进行转义,如:
SELECT * FROM region_info WHERE region LIKE '%\%%';
正确结果集:

代码中查询,处理查询内容工具类:
public class MySQLUtil {
/**
* sql特殊字符转义
*
* @param content 转义内容
* @return 转义后内容
*/
public static String escape(String content) {
if (content != null && !content.trim().isEmpty()) {
content = content.replaceAll("\\\\", "\\\\\\\\");
content = content.replaceAll("_", "\\\\_");
content = content.replaceAll("%", "\\\\%");
content = content.replaceAll("'", "\\\\'");
}
return content;
}
}MySQL模糊查询时无法匹配中文的解决
问题描述
在开发中遇到了一个问题,就是在使用Text文本框当作筛选条件进行模糊查询时,无法匹配text文本框的中文字符,但是英文和数字都可以正常筛选,于是怀疑是哪里的配置文件配置没有加上UTF-8。
解决方案
通过查看修改两个配置文件解决了这个问题。
1.查看数据库连接的配置文件在你的项目下找到连接数据库的配置文件,一般为 url=jdbc…形式,
如下文件:

在你的项目名称,也就是?后面,查看是否有加上了UTF-8

2.找到你的tomcat 安装位置,在安装位置的conf文件夹下找到一个名为 server.xml的文件,打开修改。

如上图,查看你是否加上了 URIEncoding=“UTF-8” 。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
