zhangyan297 发表于 2008-4-14 23:11

利用模糊查询的问题,各位请教下!

我最近项目里添加了一个模糊查询的功能,就是搜索关键字,然后查询出数据
public void selectbykeyword(String keyword){
String sql="select * from where name like ? or sex like ? or type like ? ......";
.....
....
....
pstmt.setString(1,"%"+keyword+"%");
pstmt.setString(2,"%"+keyword+"%");
pstmt.setString(3,"%"+keyword+"%");
..................................
...................................
pstmt.executeQuery();
System.out.print(keyword); //这个参数是从Servlet中获取的,而且在Tomcat中也能获取到参数
关键就在这里,我获取的参数,但是传到SQL语句就查询不到,页面中没有数据,

我用查询分析器用上面的SQL语句,可以查询到,但是也有问题
比如我查询用户表中的姓名
其中有个姓名叫 美女,那么,我的语句是
select * from where name like '美女'//这个就能查询到
select * from where name like '美'  //这个就不能查询到

难道关键字不是这样的?请各位请教下,我想了通宵都搞不定

}

xinzheng 发表于 2008-4-16 08:54

select * from where name like '美%'

luyihuaa5201 发表于 2008-4-17 16:07

select * from where name like '%美%'  像这样不管美是在名字中的哪个位置都能查询出来~~

lff642 发表于 2008-4-25 16:43

你可以使用存储过程来解决
create procedure up_likesel
@name varchar(20),
@sex varchar(2),
@type varchar(20)
as
begin
  declare @sqlstr varchar(8000)
  set @sqlstr = 'select * from tb where 1 = 1'
if @name is not null --传入一个@NAME
   set @sqlstr = @sqlstr+'name like '+@name
if @sex is not null
   set @sqlstr = @sqlstr+'sex like '+@sex
is @type is not null
   set @sqlstr = @sqlstr+'type like '+@type
    exec(@sqlstr)
end
go

页: [1]

编程论坛