queryDataSet中多条件过滤数据集的sql写法

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,查所有的记录)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值