我在我的应用程序中实现动态搜索,我有以下选项来构建查询。
例如:
select * from A,B where a.id like nvl( {input}, '%')
and a.id = b.aid
and b.value like nvl({input2},'%');
因为id是主键,所以我在oracle中遇到以下错误。
答案 0 :(得分:2)
首先,对于通配符搜索,您需要使用LIKE
谓词,而不是=
。其次,显然,您不能将LIKE
谓词用于数值数据。您可以做的是:
select * from A,B where ( a.id = {input} or {input} is null )...
答案 1 :(得分:0)
一个简单的解决方案可能是:
StringBuffer sqlSB = new StringBuffer("select * from A,B where a.id = b.aid ");
if(input!=null&&!input.equals("")){
sqlSB.append(" and a.id = ").append(input);
}
if(input2!=null&&!input2.equals("")){
sqlSB.append(" and b.value = '").append(input2).append("' ");
}