注册 登录
编程论坛 SQL Server论坛

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

zhangyan297 发布于 2008-04-14 23:11, 1113 次点击
我最近项目里添加了一个模糊查询的功能,就是搜索关键字,然后查询出数据
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 '美'  //这个就不能查询到

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

}
3 回复
#2
xinzheng2008-04-16 08:54
select * from where name like '美%'
#3
luyihuaa52012008-04-17 16:07
select * from where name like '%美%'  像这样不管美是在名字中的哪个位置都能查询出来~~
#4
lff6422008-04-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