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写法
最新推荐文章于 2026-06-16 20:16:29 发布
博客介绍了在SQL查询中处理NULL值的问题。当数据库记录字段为NULL时,常规查询可能查不出结果。文中给出两种解决方法,一是用decode函数,若字段为NULL用字符常量代替;二是使用instr和decode结合,还指出前者可能更快。同时提到接收参数时的注意事项。
445

被折叠的 条评论
为什么被折叠?



