java项目中如何实现多选项的模糊或者精确查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java项目中如何实现多选项的模糊或者精确查询相关的知识,希望对你有一定的参考价值。
在java中如何实现多选项的查询,如:时间、商品名、生厂商、仓库、商品数量等等,其中根据一个选项或多个选项来精确或者模糊查询。在业务逻辑中SQL语句应该如何实现?数据库为ORACLE 11g
时间、商品名、生厂商、仓库、商品数量 这几个量 你从前端传送到业务逻辑层的时候先判断 其是否为空 之后拼接SQL
String sql=“select * from 表 where “
if(shijian!=null||!“”.eqaues(shijian))
sql=sql+"shijian='+时间 +'"
大概是这个意思
eqaues 我写错了 不用eclipse 敲 我很多东西不会写 参考技术A select * from 表 where 条件
一个选项或多个选项:
多个条件 可以用 and 或者 or连接, and表示且 or表示或者
精确或者模糊查询
精确使用 = 模糊使用like 其中like有占位符 _ 和匹配符 %
占位符表示提一个字符,匹配符表示替代0个或者多个字符
模糊查询使用 “like" ,精确查询使用“=”.
拼接sql语句用 StringBuffer。
例如:
StringBuffer sql = new StringBuffer();
sql.append("");//引号里面放你的sql语句。 参考技术C StringBuffer sb
可以实现的,多个,输入,判断每个条件是否为空。
如果不为空append进sb,具体,你自己决定,反正,查询功能上,查询一条和多条。机理是类似的
参考技术D 针对时间可以用 between..and 来约束范围,同时Oracle的时间亦可以用大于等于小于等操作符。楼主的意思不大明白,你所说的多选是指一张表中的多个字段同时约束结果,还是一个字段中的约束一定范围。
如果是多个字段同时约束查询结果的话,这些字段约束条件间可以用and进行连接。
jsp 实现模糊查询
按照图片选的条件进行搜索数据库里的内容.
例如;TEXT框的name=zpmc
多选框的name分别为:csdx,zplx,zpfg
TEXT框的name为zz,dw
数据库与其有关的表,和列的名为:student(表名),zpmc,csdx,zplx,zpfg,zz,dw(列名)
应该先判断是否为空..后再...
我的语句这样:
String sql = "SELECT * FROM ppt WHERE 1=1";
if(!zpmc.equals("")&&zpmc!=null)
sql=sql+ " OR zpmc like '%"+zpmc+"%'";
else
if(!csdx.equals("")&&csdx!=null)
sql=sql+ " OR csdx like '%"+csdx+"%'";
else
if(!zplx.equals("")&&zplx!=null)
sql=sql+ " OR zplx like '%"+zplx+"%'";
else
if(!zpfg.equals("")&&zpfg!=null)
sql=sql+ " OR zpfg like '%"+zpfg+"%'";
else
if(!zz.equals("")&&zz!=null)
sql=sql+ " OR zz like '%"+zz+"%'";
else
if(!dw.equals("")&&dw!=null)
sql=sql+ " OR dw like '%"+dw+"%'";
------------------------------------------------------------
搜索出来的不符合我的意思..
String zpmc = request.getParameter("zpmc");
String csdx = request.getParameter("csdx");
String zplx = request.getParameter("zplx");
String zpfg = request.getParameter("zpfg");
String zz = request.getParameter("zz");
String dw = request.getParameter("dw");
这个主要是在sql端实现的,只要页面参数选择正确:
比如:
查询所有员工姓名中第二个字符为A的员工信息
select * from emp where ename like \'_A%\';
查询员工姓名中包含E的员工信息
select * from emp where ename like \'%E%\';
查询20部门员工姓名中包含E的员工信息
查询20部门员工,职位为\'MANAGER\',姓名中包含E的员工信息
查询20部门员工,职位为\'MANAGER\',姓名的第二个字符为A,最后一个字符为E的员工信息
查询20部门员工,职位为\'MANAGER\',姓名的包含S并且包含E的员工信息 参考技术A 补充:
lz是否指在一个文本框中输入多个关键字?如果是的话,用分隔符(一般是逗号)把这几个关键词分解出来:
conditions.split(" ");
然后把每个关键词都拼接到查询语句中去就行了。最后拼接的过程如:
where columnname like "'%" + condition[0] +"%'" and columnname like "'%" + condition[1] +"%'"
===================
如果lz是使用数据库,那么查询时,使用 where columnname like "'%" + condition +"%'"就可以了,%是通配符
参考技术B 楼主应该是要实现的是一个查询的功能吧,但你的方法显然是很……麻烦的,从request对象中,你可以获取到传入servlet的参数的key和values,这个key不就是你数据库中的列,而这个values不就是你的模糊条件吗?不知你懂没懂?说的是我自己的想法,我一直都这么做的,比较的简单,代码比较的简单,而且也很少追问
我不懂..能给些例子我吗-_-!..麻烦了!!!
参考技术C 是多选框出问题了吧,多选框值的接收应用String csdx[] = getParameterValues("csdx");本回答被提问者采纳以上是关于java项目中如何实现多选项的模糊或者精确查询的主要内容,如果未能解决你的问题,请参考以下文章