连接DB2数据库字段为空的写法
DB2 数据源 ? Is null 报错的解决办法
润乾报表中参数值为空时查询所有数据的一般写法是 ? Is null ,而此处的 ? 代表一个参数,但是在一些特定的数据库中,不支持 ? Is null 的写法,比如 db2 数据库,如果使用 db2 数据库作为数据源,使用 ? Is null 的写法就会报如下图的错误:
而去掉 ? Is null 的条件后就可以正常浏览数据,可见是 ? Is null 这个语句的问题。
而对于 db2 的 ? Is null 有以下两种比较方便的代理办法:
解决办法 1 :
在数据集的 sql 里面用 cast(? as varchar(10)) is null 代替 ? Is null 把这个 varchar 改成数据库中的类型, DB2 数据库就可以支持了,就可以正常的浏览数据了
解决办法 2 :
把数据集的 sql 语句写成 SELECT * FROM test where id in (?) or ?=’!EOF’ 的形式,然后在对应的第二个参数处 ( 也就是第二个 ?) 写成 if(arg1==null,”!EOF”,”!EMF”) 即可。
如果使用 db2 作为数据源,而查询数据的时候又想实现当参数为空的时候查询全部数据,就可以采用上面两个办法实现需求了。