String sql=null;
String searchfield=new String(search.getSearchfield().getBytes("8859_1")); // value=1
String keyword=new String(search.getKeyword().getBytes("8859_1")); // value=1
out.println("keyword:"+keyword);
if(keyword =="1")
{
out.println("--in if ---");
sql="select * from msdba.cl180 where "+searchfield+" like '%'||keyword||'%'";
out.println("sql:"+sql);
}
else
{
out.println("--in else---");
sql="select * from msdba.cl180 where "+searchfield+" like '%'||keyword||'%'";
out.println("sql:"+sql);
}
输出的结果为:keyword:1
--in else---
select * from msdba.cl180 where 1 like '%'||keyword||'%'
结果是1就要进入if 里进行循环,却进入了else,用模糊查询却还是出现了变量'%'||keyword||'%',在oracle中应该是这样写呀
String searchfield=new String(search.getSearchfield().getBytes("8859_1")); // value=1
String keyword=new String(search.getKeyword().getBytes("8859_1")); // value=1
out.println("keyword:"+keyword);
if(keyword =="1")
{
out.println("--in if ---");
sql="select * from msdba.cl180 where "+searchfield+" like '%'||keyword||'%'";
out.println("sql:"+sql);
}
else
{
out.println("--in else---");
sql="select * from msdba.cl180 where "+searchfield+" like '%'||keyword||'%'";
out.println("sql:"+sql);
}
输出的结果为:keyword:1
--in else---
select * from msdba.cl180 where 1 like '%'||keyword||'%'
结果是1就要进入if 里进行循环,却进入了else,用模糊查询却还是出现了变量'%'||keyword||'%',在oracle中应该是这样写呀
换成&以后就报错了。好像不识别&符号
用 sql="select * from msdba.cl180 where "+searchfield+"='"+keyword+"'";
是可以查询成功的,不过我想模糊查询,按上面的写就不能实现了
{
out.println("--in if ---");
sql="select * from msdba.cl180 where "+searchfield+" like '%1%'";
out.println("sql:"+sql);
}
输出的是:
sql:select * from msdba.cl180 where 1 like '%'+keyword+'%'
'%"+keyword+"%'"; 中间的是双引号,而你的是单引号。
sql="select * from msdba.cl180 where "(到这里是字符串)+searchfield(变量)+" like '%'||keyword||'%'"(这中间还是字符串,你的变量keyword被看作字符了);
所以要改成
sql="select * from msdba.cl180 where "(到这里是字符串)+searchfield(变量)+" like '%"(字符串)+keyword(变量)+"%'"(字符串);