Java程序中模糊查询问题

Stringsql="select*fromtablewhereNamelike'%"+keyword+"%'";和Stringsql="select*fromtable... String sql = "select * from table where Name like '%"+keyword+"%'";

String sql = "select * from table where Name like '%keyword%'";
还有
String sql = "select * from table where Name like %keyword%";
有什么区别?我觉得都一样
String sql = "select * from table where Name like '_keyword_'";

String sql = "select * from table where Name like '%keyword%'";
又有什么区别?是不是匹配字符的区别?
展开
 我来答
武软LC
2010-10-08 · TA获得超过212个赞
知道小有建树答主
回答量:140
采纳率:0%
帮助的人:142万
展开全部
String sql = "select * from table where Name like '%"+keyword+"%'"
这个是拼接字符串 keyword是变量 可以在类里面定义成其他字符
String sql = "select * from table where Name like '%keyword%'";
这个只能是查找keyword不是变量 只是说查找keyword字符串
String sql = "select * from table where Name like %keyword%";
而这个应该会报错的 因为必须加引号
String sql = "select * from table where Name like '_keyword_'";
这个应该也会有问题吧 因为_是匹配单个字符的
陈学阳
2010-10-12 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5467万
展开全部
你把这个稍微改改就行了,用StringBuilder 拼的sql语句,那样的话就会实现“果输入为空就输出所有”其他的一样
public static List getString(String name){
String sql = null;
StringBuilder str = new StringBuilder();
str.append("select * from 12.guzhang ");
if(name!=null||name==""){
str.append(" and name like '%"+name+"%'");
}
sql=str.toString();
List carboss = new ArrayList();
Connection con = JDBC.getConnection();
Statement st = null;
ResultSet re = null;

try {
st = con.createStatement();
re = st.executeQuery(sql);
while(re.next()){
carboss.add(re.getInt(1));
carboss.add(re.getString(2));
carboss.add(re.getString(3));
}
return carboss;
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBC.reclose(re, st, con);
}
return null;
}

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2010-10-08 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3253万
展开全部
String keyword = "Hello World"

String sql = "select * from table where Name like '%"+keyword+"%'";

String sql = "select * from table where Name like '%keyword%'";
还有
String sql = "select * from table where Name like %keyword%";
有什么区别?我觉得都一样

第一个SQL会是:
select * from table where Name like '%Hello World%'
意思是,找name里面有 Hello World 的。

第二个SQL会是
select * from table where Name like '%keyword%'
意思是,找name里面有 keyword 的。

第三个SQL 则是:
select * from table where Name like %keyword%
语法错误!

String sql = "select * from table where Name like '_keyword_'";

String sql = "select * from table where Name like '%keyword%'";
又有什么区别?是不是匹配字符的区别?

like '_keyword_' 这里的 _ 意思是 1个字符

也就是说, 如果是 hahakeywordxixi 是不匹配的。

like '%keyword%' 这里的 % 意思是 1个或多个字符

也就是说, 如果是 hahakeywordxixi 是匹配的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
26777880
2010-10-08 · TA获得超过1.1万个赞
知道大有可为答主
回答量:9795
采纳率:0%
帮助的人:4602万
展开全部
你把这个稍微改改就行了,用StringBuilder 拼的sql语句,那样的话就会实现“其实并不一定是你模糊查询的错误,兴许事哪步漏掉了,再以着急更不好找,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式