前段时间我在开发项目的时候,就关于模糊查询遇到了一点问题,主要是有两大问题:1、通配符问题;2、不连续关键字查询。下面我一一说出我是怎么解决的:

1、统配符问题

比如说在搜索框中输入'%'、'_'、'/'时会出错,因为这些特殊符号在sql语句查询的时候是有他特定的意义的,所有这里要对前台传过来的keyword搜索内容进行排除通配符处理,我是在工具类中写了一个方法代码如下:

/**

* 根据搜索特殊字符串

* @param id

* @return 取不到返回null

*/

public static String specialStr(String str){

Integer index=str.indexOf("%");

Integer index1=str.indexOf("_");

Integer index2=str.indexOf("/");

StringBuffer stringBuffer = new StringBuffer(str);

if(index!=-1) {

stringBuffer.insert(index, "\\");

}

if(index1!=-1) {

stringBuffer.insert(index1, "\\");

}

if(index2!=-1) {

stringBuffer.insert(index2, "\\");

}

return stringBuffer.toString();

}

然后在controller层导入该工具类,使用specialStr方法就ok了,代码如下:

String keyword = request.getParameter("keyword");

String keyword1 = "";

if (!"".equals(keyword) && keyword != null) {

keyword1 = CommonUtils.specialStr(request.getParameter("keyword"));// 排除%等通配符

}最后将keyword1作为搜索内容带到数据库中查询就行了。

2、不连续关键字查询

当在搜索框中输入不连续的关键字时,也能从数据库中搜索的到该内容,就比如:我想搜索公司名称为阿里巴巴的数据信息时,我输入阿巴也能搜索的到阿里巴巴,这该怎么处理呢?其实很简单,也是写一个工具类,将搜索框中的字符串每两个字符之间都加上一个‘%’就ok了,具体代码如下:

public static String specialStrKeyword(String str){

if(str==null||str==""){

return null;

}

StringBuffer stringBuffer = new StringBuffer(str);

int length=str.length();

for (int i = 0; i

char chari=stringBuffer.charAt(i);

if(i==0){

if(chari=='%'||chari=='_'||chari=='\\'){

stringBuffer.insert(i, "\\");

i++;

length++;

}

}else{

if(chari=='%'||chari=='_'||chari=='\\'){

stringBuffer.insert(i, "%\\");

i+=2;

length+=2;

}else{

stringBuffer.insert(i, "%");

i++;

length++;

}

}

}

return stringBuffer.toString();

}

同样在controller层导入该工具类,使用specialStrKeyword方法就ok了,代码如下:

String keyword = request.getParameter("keyword");

String keyword1 = '';

if (!"".equals(keyword) && keyword != null) {

keyword1 = CommonUtils.specialStr(request.getParameter("keyword"));// 排除%等通配符

keyword1 = CommonUtils.specialStrKeyword(keyword1);

}

最后将keyword1作为搜索内容带到数据库中查询就行了。

cad模糊查询符号_模糊查询(排除%等通配符并支持不连续关键字查询)相关推荐

  1. cad模糊查询符号_万能模糊查询SQL

    ****************************************************************** * 功能:万能模糊查询SQL * 时间:2015/1/30 16: ...

  2. cad模糊查询符号_SQL 模糊查询之特殊字符

    1. SQL Like对时间查询 时间格式的数据为各种各样,不方便查询.在使用like模糊查询时,先将数据转换为统一的格式,这样在使用like查询时就方便多了. 2. SQL like对特殊字符 在s ...

  3. 自定义插件解决MyBatis-Plus like查询遇_ % \等字符需转译问题(含分页查询)

    我们使用MyBatis-Plus执行LIKE模糊查询时,若预处理参数包含_ % \等字符(欢迎补充),会查询出所有结果,这不是我们需要的. 不论写法是自定义SQL xxx like concat('% ...

  4. Java根据学号提取班级_学生成绩管理系统 1. 能够实现根据以下关键字查询:学生姓名 、学号、班级、课 联合开发网 - pudn.com...

    学生成绩管理系统 所属分类:Java编程 开发工具:Java 文件大小:1204KB 下载次数:0 上传日期:2020-12-06 16:50:53 上 传 者:sunyue111 说明:  1. 能 ...

  5. 模糊测试软件测试_模糊测试

    多年来,我震惊于可能导致Microsoft Word崩溃的损坏文件数量. 几个字节不合时宜,整个应用程序就大火了. 在较旧的,不受内存保护的操作系统上,整个计算机通常会随之崩溃. 为什么Word无法识 ...

  6. matlab有模糊分析,用matlab进行模糊综合评判_模糊综合评判matlab

    用matlab进行模糊综合评判 考虑一个服装评判的问题,为此建立因素集U={u1,u2,u3,u4},其中u1表示花色,u2表示式样,u3表示耐穿程度,u4表示价格,建立评判集V={v1,v2,v3, ...

  7. mysql微服务查询问题_【mysql】微服务架构下跨服务查询的聚合有什么好的方案?...

    微服务架构中,每个服务都有自己的独立数据库. 然而现在有个需求,需要生成一张实时的报表,该报表包含两个服务的数据. 如服务A,服务B.B中仅包含A的主键id作为关联. 而此报表的搜索条件包含A服务实体 ...

  8. c语言 mysql 查询数字_使用mysql C语言API编写程序—MYSQL数据库查询操作

    //MYSQL_RES保存查询结构 MYSQL_RES* result_ = NULL; int error_code = 0;//保存错误码 char error_info[1024] = '\0' ...

  9. excel制作录入和查询系统_叮咚!您有一份Excel人员信息查询系统,请您查收~

    叮咚!您有一份Excel人员信息查询系统,请您查收~ 打开中-- 1 2 3 open! 哦豁,瞅着还不错哦~ 下面介绍如何制作一个简易的人员信息查询系统. 数据源准备 第一步当然是准备数据源,数据源 ...

最新文章

  1. Oracle官方教程之Fork/Join
  2. android 将bitmap存为 bmp格式图片大小,Android Bitmap保存為.bmp格式,圖像轉化為黑白圖片...
  3. SAP Explore hidden functions in MD04
  4. IBM一周内拥有10万Lotus Symphony用户
  5. SOA:A note on RPC
  6. 按键精灵安卓怎么可以获取屏幕上的数字_安卓11来了,感受一下
  7. python参考手册 豆瓣_python之父亲自撰写两年后豆瓣评分9.8《python深度学习》PDF分享...
  8. JMS的两种消息模型(Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub))应用举例
  9. web开发方法_确保进入Web开发的最快方法
  10. 已解决:TeamViewer使用的设备数量上限
  11. 一个精仿今日头条项目
  12. 帷幕的帷是什么意思_美术生每天坚持练习|但越画越差的原因是什么?
  13. ubuntu 安装 teamViewer 出现错误
  14. EFFECTIVE C++ (万字详解)(一)
  15. 访问阿里云服务器配置的ftp后,报错227 entering passive mode
  16. android时钟每秒 1,极简时钟
  17. 爬取拉钩网60条招聘信息并存入数据库
  18. while循环和doWhile循环
  19. canvas画图--流畅没有齿痕的线,图像画线
  20. 2019年南京大学计算机考研分数线,2019年南京大学考研复试分数线已经公布

热门文章

  1. 星星之火-32: 扩频码、OVSF正交扩频码、Walsh函数、信道码;扰码、伪随机码序列、m序列码、Gold码序列
  2. 从头学前端-CSS基础02
  3. 2020年数学建模国赛D题题目和解题思路
  4. 1 (SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------ 阶段成果笔记
  5. TED高赞演讲:如何掌控你的自由时间?
  6. 批量更改图片格式(png改为rgb)
  7. CHIP-seq流程学习笔记(6)-peak注释软件ChIPseeker
  8. SVG JS 动态赋值
  9. linux下安装ffmpeg的教程
  10. spring5.3.x源码阅读环境搭建