sql 模糊搜索无输入参数时查询所有

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 模糊搜索无输入参数时查询所有相关的知识,希望对你有一定的参考价值。

我现在可以完成模糊搜索,但是我想在没有输入参数的时候进行全部搜索,要怎么做?谢谢!
String sql2 = "select * from table1 where Eshipname like \"%"+ keyword +"%\" or MMSI like \"%" + keyword + "%\" order by MMSI desc limit "+ (page-1)*10 +","+ size +"";

当没有参数输入的时候你可以是参数等于两个百分号,这样就可以匹配字段里的任意字符。这样就能够查询所有的的。既实现了模糊查找也防止了无参数时的错误。 参考技术A mysql: 在进入dao层之前把%替换为\\%,(如果是日文的\\要换成¥¥¥¥),注意,要创建一个新的变量接收这个替换后的变量,这个新的变量就是传入dao层的变量,别忘了不含百分号时的else。

模糊查询中输入通配符的问题

模糊查询中输入通配符的问题:

比如说在搜索框中输入‘%‘、‘_‘、‘/‘时会出错,因为这些特殊符号在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作为搜索内容带到数据库中查询就行了。

以上是关于sql 模糊搜索无输入参数时查询所有的主要内容,如果未能解决你的问题,请参考以下文章

模糊查询中输入通配符的问题

bug记录-模糊搜索之通配符

js如何实现模糊查询

MySQL使用总结

mysql模糊查询

MySql 模糊查询范围查询