报表查询系列之多值模糊查询
有参数查询的报表,有时候会需要多值模糊查询。 比如
产品清单表中,输入粉,鱼两个检索字,查询出所有产品名称包含这两个字的数据。如下图
下面我们来看一下在润乾报表中如何处理这一需求。
1. 使用向导生成明细报表。如下图
向导生成报表步骤:
文件– 新建报表–选择数据源并指定数据集名称–选择【SQL 检索】–指定数据库表和字段–点击生成【网格式报表】。
2. 数据集中增加参数过滤
在 SQL 语句后 where 子句部分增加,数据筛选语句
SELECT * FROM 产品 改为 SELECT * FROM 产品 where ${arg2}
3. 定义报表参数
在菜单栏中选择报表 – 参数 打开参数编辑页面定义参数,arg1 ,arg2 如下图
注: arg1 为普通参数 用来接收 用户直接传入的筛选值
** [重点]**arg2 为动态参数 用来对 arg1 做计算处理 以达到 多值模糊查询的效果
其表达式为
if(arg1 == null or arg1=="“,“1=1”,“产品名称 like ’%”+replace(@arg1,”,“,”%’ or 产品名称 like ‘%“)+”%’")
意味:参数 arg1 为空时 查询全部,不为空时,使用 replace 函数将 arg1 处理为 sql 可执行的结果 产品名称 like ‘% 粉 %’ or 产品名称 like ‘% 糖 %’
4. 定义参数模板
目的是为了方便 web 端访问时输入不同的参数值
最终效果
到这里,使用动态参数轻松实现了多值模糊查询。
知识点
1、数据集 SQL 实现动态取数:
使用参数的 ${参数名} 用法
2、 查询条件为空,查询全部:
使用参数 1=1 的用法
3、多值匹配:
以“,”分割多个查询关键字,拼接成多个 or 相连的 like 条件。