QueryDataSet qds = new QueryDataSet();
qds.setQuery(new QueryDescriptor(new Database(), "select from table where DECODE(:field,null,'a',:field || 'a') = field || 'a' ",pr, true, Load.ALL));
pr.addColumn("field", Variant.STRING, ParameterType.IN);
decode就是说如果field==null,就用'a'代替之,否则还是=field
但是如果数据库中一条记录的 字段field为null,就查不出来,因为如果是null,sql应该为 field is null,
我们想到如果是null,就加一字符常量 'a' 的方法可以解决此问题
注意:sql中 '' 不能和 null 匹配上。
另一方法:instr(decode(:para,null,tb.field,:para),tb.field)>0 ,估计没有直接用decode快
引用:
QueryDataSet qds = DM.getQds();
ParameterRow pr.setString("field", no); //接收查询条件页面传来的参数,赋给参数行(前面不能加"",否则就与dm里面的null,不匹配了,就查不出来,如果no为null,允许它是null,查所有的记录)
queryDataSet中多条件过滤数据集的sql写法
最新推荐文章于 2021-02-25 02:10:31 发布